diff --git a/CHANGELOG.md b/CHANGELOG.md index 343757463..ca5bfa44a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ -## v0.17.0-WIP +## v0.17.0 + +- New more detailed guides for using PocketBase as framework (both Go and JS). + _If you find any typos or issues with the docs please report them in https://github.com/pocketbase/site._ + +- Added new experimental JavaScript app hooks binding via [goja](https://github.com/dop251/goja). + They are available by default with the prebuilt executable if you create a `*.pb.js` file in `pb_hooks` directory. + Lower your expectations because the integration comes with some limitations. For more details please check [Extend with JavaScript](https://pocketbase.io/docs/js-overview/) guide. + You can also enable the JS app hooks as part of a custom Go build for dynamic scripting but you need to register the `jsvm` plugin manually: + ```go + jsvm.MustRegister(app core.App, config jsvm.Config{}) + ``` - Added Instagram OAuth2 provider ([#2534](https://github.com/pocketbase/pocketbase/pull/2534); thanks @pnmcosta). @@ -6,12 +17,8 @@ - Added Yandex OAuth2 provider ([#2762](https://github.com/pocketbase/pocketbase/pull/2762); thanks @imperatrona). -- Renamed `Hook.Reset()` -> `Hook.RemoveAll()`. - -- `Hook.Add()` and `Hook.PreAdd` now returns a unique string identifier that could be used to remove the registered hook handler via `Hook.Remove(handlerId)`. - - Added new fields to `core.ServeEvent`: - ``` + ```go type ServeEvent struct { App App Router *echo.Echo @@ -21,22 +28,40 @@ } ``` -- (@todo docs) Changed the After* hooks to be called right before writing the user response, allowing users to return response errors from the after hooks. - -- Fixed realtime delete event to be called after the record was deleted from the DB (_including transactions and cascade delete operations_). +- Added `record.ExpandedOne(rel)` and `record.ExpandedAll(rel)` helpers to retrieve casted single or multiple expand relations from the already loaded "expand" Record data. -- Added `subscriptions.Client.Unset()` helper to remove a single cached item from the client store. - -- (@todo docs) Added rule and filter record `Dao` helpers: - ``` +- Added rule and filter record `Dao` helpers: + ```go app.Dao().FindRecordsByFilter("posts", "title ~ 'lorem ipsum' && visible = true", "-created", 10) app.Dao().FindFirstRecordByFilter("posts", "slug='test' && active=true") app.Dao().CanAccessRecord(record, requestInfo, rule) ``` -- (@todo docs) Added `Dao.WithoutHooks()` helper to create a new `Dao` from the current one but without the create/update/delete hooks. +- Added `Dao.WithoutHooks()` helper to create a new `Dao` from the current one but without the create/update/delete hooks. + +- Use a default fetch function that will return all relations in case the `fetchFunc` argument of `Dao.ExpandRecord(record, expands, fetchFunc)` and `Dao.ExpandRecords(records, expands, fetchFunc)` is `nil`. + +- For convenience it is now possible to call `Dao.RecordQuery(collectionModelOrIdentifier)` with just the collection id or name. + In case an invalid collection id/name string is passed the query will be resolved with cancelled context error. + +- Refactored `apis.ApiError` validation errors serialization to allow `map[string]error` and `map[string]any` when generating the public safe formatted `ApiError.Data`. + +- Added support for wrapped API errors (_in case Go 1.20+ is used with multiple wrapped errors, the first `apis.ApiError` takes precedence_). + +- Added `?download=1` file query parameter option to force the browser to always download the file and not show its preview. + +- Added new utility `github.com/pocketbase/pocketbase/tools/template` subpackage to assist with rendering HTML templates using the standard Go `html/template` and `text/template` syntax. + +- Added `types.JsonMap.Get(k)` and `types.JsonMap.Set(k, v)` helpers for the cases where the type aliased direct map access is not allowed (eg. in [goja](https://pkg.go.dev/github.com/dop251/goja#hdr-Maps_with_methods)). + +- Soft-deprecated `security.NewToken()` in favor of `security.NewJWT()`. + +- `Hook.Add()` and `Hook.PreAdd` now returns a unique string identifier that could be used to remove the registered hook handler via `Hook.Remove(handlerId)`. + +- Changed the after* hooks to be called right before writing the user response, allowing users to return response errors from the after hooks. + There is also no longer need for returning explicitly `hook.StopPropagtion` when writing custom response body in a hook because. -- **!** Renamed `*Options` to `*Config` for consistency and replaced the unnecessary pointers with their value equivalent to keep the applied configuration defaults isolated within their function calls: +- ⚠️ Renamed `*Options{}` to `Config{}` for consistency and replaced the unnecessary pointers with their value equivalent to keep the applied configuration defaults isolated within their function calls: ```go old: pocketbase.NewWithConfig(config *pocketbase.Config) *pocketbase.PocketBase new: pocketbase.NewWithConfig(config pocketbase.Config) *pocketbase.PocketBase @@ -57,67 +82,44 @@ new: migratecmd.MustRegister(app core.App, rootCmd *cobra.Command, config migratecmd.Config) ``` -- (@todo docs) Added new experimental JavaScript app hooks binding via [goja](https://github.com/dop251/goja). - They are available by default with the prebuilt executable if you add a `*.pb.js` file in `pb_hooks` directory. - To enable them as part of a custom Go build, you need to register the `jsvm` plugin: - ```go - jsvm.MustRegister(app core.App, config jsvm.Config{}) - ``` - (@todo add note about autogenerated hooks and migrations types...) - -- Refactored `apis.ApiError` validation errors serialization to allow `map[string]error` and `map[string]any` when generating the public safe formatted `ApiError.Data`. - -- Added `types.JsonMap.Get(k)` and `types.JsonMap.Set(k, v)` helpers for the cases where the type aliased direct map access is not allowed (eg. in [goja](https://pkg.go.dev/github.com/dop251/goja#hdr-Maps_with_methods)). - -- Fixed `migrate down` not returning the correct `lastAppliedMigrations()` when the stored migration applied time is in seconds. - -- Soft-deprecated `security.NewToken()` in favor of `security.NewJWT()`. - -- Allowed `0` as `RelationOptions.MinSelect` value to avoid the ambiguity between 0 and non-filled input value ([#2817](https://github.com/pocketbase/pocketbase/discussions/2817)). - -- Minor Admin UI fixes (typos, grammar fixes, removed unnecessary 404 error check, etc.). - -- (@todo docs) For consistency and convenience it is now possible to call `Dao.RecordQuery(collectionModelOrIdentifier)` with just the collection id or name. - In case an invalid collection id/name string is passed the query will be resolved with cancelled context error. - -- (@todo docs) Use a default fetch function that will return all relations in case the fetchFunc argument of `Dao.ExpandRecord()` and `Dao.ExpandRecords()` is `nil`. +- ⚠️ Changed the type of `subscriptions.Message.Data` from `string` to `[]byte` because `Data` usually is a json bytes slice anyway. -- (@todo docs) Added `record.ExpandedOne(rel)` and `record.ExpandedAll(rel)` helpers to retrieve casted single or multiple expand relations from the already loaded "expand" Record data. - -- **!** renamed `models.RequestData` to `models.RequestInfo` and soft-deprecated `apis.RequestData(c)` to `apis.RequestInfo(c)` to avoid the stuttering with the `Data` field. +- ⚠️ Renamed `models.RequestData` to `models.RequestInfo` and soft-deprecated `apis.RequestData(c)` in favor of `apis.RequestInfo(c)` to avoid the stuttering with the `Data` field. _The old `apis.RequestData()` method still works to minimize the breaking changes but it is recommended to replace it with `apis.RequestInfo(c)`._ -- **!** Changed the type of `subscriptions.Message.Data` from `string` to `[]byte` because `Data` usually is a json bytes slice anyway. - -- Added `?download=1` file query parameter option to instruct the browser to always download a file and not show a preview. -- Added support for wrapped API errors (_in case Go 1.20+ is used with multiple wrapped errors, `apis.ApiError` takes precedence_). +- ⚠️ Changes to the List/Search APIs + - Added new query parameter `?skipTotal=1` to skip the `COUNT` query performed with the list/search actions ([#2965](https://github.com/pocketbase/pocketbase/discussions/2965)). + If `?skipTotal=1` is set, the response fields `totalItems` and `totalPages` will have `-1` value (this is to avoid having different JSON responses and to differentiate from the zero default). + With the latest JS SDK 0.16+ and Dart SDK v0.11+ versions `skipTotal=1` is set by default for the `getFirstListItem()` and `getFullList()` requests. -- Changes to the List/Search APIs + - The count and regular select statements also now executes concurrently, meaning that we no longer perform normalization over the `page` parameter and in case the user + request a page that doesn't exist (eg. `?page=99999999`) we'll return empty `items` array. - - Reverted the default `COUNT` column to `id` as there are some common situations where it can negatively impact the query performance. - Additionally, from this version we also set `PRAGMA temp_store = MEMORY` so that also helps with the temp B-TREE creation when `id` is used. - _There are still scenarios where `COUNT` queries with `rowid` executes faster, but the majority of the time when nested relations lookups are used it seems to have the opposite effect (at least based on the benchmarks dataset)._ + - Reverted the default `COUNT` column to `id` as there are some common situations where it can negatively impact the query performance. + Additionally, from this version we also set `PRAGMA temp_store = MEMORY` so that also helps with the temp B-TREE creation when `id` is used. + _There are still scenarios where `COUNT` queries with `rowid` executes faster, but the majority of the time when nested relations lookups are used it seems to have the opposite effect (at least based on the benchmarks dataset)._ - - The count and regular select statements also now executes concurrently, meaning that we no longer perform normalization over the `page` parameter and in case the user - request a page that doesn't exist (eg. `?page=99999999`) we'll return empty `items` array. +- ⚠️ Disallowed relations to views **from non-view** collections ([#3000](https://github.com/pocketbase/pocketbase/issues/3000)). + The change was necessary because I wasn't able to find an efficient way to track view changes and the existing behavior could have too many unexpected side-effects (eg. view with computed ids). + There is a system migration that will convert the existing view `relation` fields to `json` (multiple) and `text` (single) fields. + This could be a breaking change if you have `relation` to view and use `expand` or some of the `relation` view fields as part of a collection rule. - - (@todo docs) Added new query parameter `?skipTotal=1` to skip the `COUNT` query performed with the list/search actions ([#2965](https://github.com/pocketbase/pocketbase/discussions/2965)). - If `?skipTotal=1` is set, the response fields `totalItems` and `totalPages` will have `-1` value (this is to avoid having different JSON responses and to differentiate from the zero default). - With the latest JS SDK 0.16+ and Dart SDK v0.11+ versions `skipTotal=1` is set by default for the `getFirstListItem()` and `getFullList()` requests. +- ⚠️ Added an extra `action` argument to the `Dao` hooks to allow skipping the default persist behavior. + In preparation for the logs generalization, the `Dao.After*Func` methods now also allow returning an error. -- Added new utility `github.com/pocketbase/pocketbase/tools/template` package to assist with rendering HTML templates using the standard Go `html/template` and `text/template` syntax. +- Allowed `0` as `RelationOptions.MinSelect` value to avoid the ambiguity between 0 and non-filled input value ([#2817](https://github.com/pocketbase/pocketbase/discussions/2817)). - Fixed zero-default value not being used if the field is not explicitly set when manually creating records ([#2992](https://github.com/pocketbase/pocketbase/issues/2992)). - Additionally, `record.Get(field)` will now always return normalized value (the same as in the json serialization) for consistency and to avoid ambiguities what is stored in the related DB table. + Additionally, `record.Get(field)` will now always return normalized value (the same as in the json serialization) for consistency and to avoid ambiguities with what is stored in the related DB table. The schema fields columns `DEFAULT` definition was also updated for new collections to ensure that `NULL` values can't be accidentally inserted. -- **!** Disallowed relations to views from non-view collections ([#3000](https://github.com/pocketbase/pocketbase/issues/3000)). - The change was necessary because I wasn't able to find an efficient way to track view changes and the existing behavior could have too many unexpected side-effects (eg. view with computed ids). - There is a system migration that will convert the existing view `relation` fields to `json` (multiple) and `text` (single) fields. - This could be a breaking change if you have `relation` to view and use `expand` or some of the `relation` view fields as part of a collection rule. +- Fixed `migrate down` not returning the correct `lastAppliedMigrations()` when the stored migration applied time is in seconds. + +- Fixed realtime delete event to be called after the record was deleted from the DB (_including transactions and cascade delete operations_). + +- Other minor fixes and improvements (typos and grammar fixes, updated dependencies, removed unnecessary 404 error check in the Admin UI, etc.). -- **!** (@todo docs) Added action argument to the Dao hooks to allow skipping the default persist behavior. ## v0.16.10 @@ -309,7 +311,7 @@ It works with a short lived (~5min) file token passed as query param with the file url. For more details and example, you could check https://pocketbase.io/docs/files-handling/#protected-files. -- **!** Fixed typo in `Record.WithUnkownData()` -> `Record.WithUnknownData()`. +- ⚠️ Fixed typo in `Record.WithUnkownData()` -> `Record.WithUnknownData()`. - Added simple loose wildcard search term support in the Admin UI. @@ -400,16 +402,16 @@ - Added CGO linux target for the prebuilt executable. -- **!** Renamed `daos.GetTableColumns()` to `daos.TableColumns()` for consistency with the other Dao table related helpers. +- ⚠️ Renamed `daos.GetTableColumns()` to `daos.TableColumns()` for consistency with the other Dao table related helpers. -- **!** Renamed `daos.GetTableInfo()` to `daos.TableInfo()` for consistency with the other Dao table related helpers. +- ⚠️ Renamed `daos.GetTableInfo()` to `daos.TableInfo()` for consistency with the other Dao table related helpers. -- **!** Changed `types.JsonArray` to support specifying a generic type, aka. `types.JsonArray[T]`. +- ⚠️ Changed `types.JsonArray` to support specifying a generic type, aka. `types.JsonArray[T]`. If you have previously used `types.JsonArray`, you'll have to update it to `types.JsonArray[any]`. -- **!** Registered the `RemoveTrailingSlash` middleware only for the `/api/*` routes since it is causing issues with subpath file serving endpoints ([#2072](https://github.com/pocketbase/pocketbase/issues/2072)). +- ⚠️ Registered the `RemoveTrailingSlash` middleware only for the `/api/*` routes since it is causing issues with subpath file serving endpoints ([#2072](https://github.com/pocketbase/pocketbase/issues/2072)). -- **!** Changed the request logs `method` value to UPPERCASE, eg. "get" => "GET" ([#1956](https://github.com/pocketbase/pocketbase/discussions/1956)). +- ⚠️ Changed the request logs `method` value to UPPERCASE, eg. "get" => "GET" ([#1956](https://github.com/pocketbase/pocketbase/discussions/1956)). - Other minor UI improvements. @@ -466,11 +468,11 @@ - Added `UploadedFiles` field to the `RecordCreateEvent` and `RecordUpdateEvent` event structs. -- **!** Moved file upload after the record persistent to allow setting custom record id safely from the `OnModelBeforeCreate` hook. +- ⚠️ Moved file upload after the record persistent to allow setting custom record id safely from the `OnModelBeforeCreate` hook. -- **!** Changed `System.GetFile()` to return directly `*blob.Reader` instead of the `io.ReadCloser` interface. +- ⚠️ Changed `System.GetFile()` to return directly `*blob.Reader` instead of the `io.ReadCloser` interface. -- **!** Changed `To`, `Cc` and `Bcc` of `mailer.Message` to `[]mail.Address` for consistency and to allow multiple recipients and optional name. +- ⚠️ Changed `To`, `Cc` and `Bcc` of `mailer.Message` to `[]mail.Address` for consistency and to allow multiple recipients and optional name. If you are sending custom emails, you'll have to replace: ```go @@ -490,11 +492,11 @@ } ``` -- **!** Refactored the Authentik integration as a more generic "OpenID Connect" provider (`oidc`) to support any OIDC provider (Okta, Keycloak, etc.). +- ⚠️ Refactored the Authentik integration as a more generic "OpenID Connect" provider (`oidc`) to support any OIDC provider (Okta, Keycloak, etc.). _If you've previously used Authentik, make sure to rename the provider key in your code to `oidc`._ _To enable more than one OIDC provider you can use the additional `oidc2` and `oidc3` provider keys._ -- **!** Removed the previously deprecated `Dao.Block()` and `Dao.Continue()` helpers in favor of `Dao.NonconcurrentDB()`. +- ⚠️ Removed the previously deprecated `Dao.Block()` and `Dao.Continue()` helpers in favor of `Dao.NonconcurrentDB()`. - Updated the internal redirects to allow easier subpath deployment when behind a reverse proxy. @@ -599,7 +601,7 @@ ``` For all those event hooks `*hook.Hook` was replaced with `*hooks.TaggedHook`, but the hook methods signatures are the same so it should behave as it was previously if no tags were specified. -- **!** Fixed the `json` field **string** value normalization ([#1703](https://github.com/pocketbase/pocketbase/issues/1703)). +- ⚠️ Fixed the `json` field **string** value normalization ([#1703](https://github.com/pocketbase/pocketbase/issues/1703)). In order to support seamlessly both `application/json` and `multipart/form-data` requests, the following normalization rules are applied if the `json` field is a diff --git a/apis/backup_test.go b/apis/backup_test.go index 9f4fca05d..6758e71e4 100644 --- a/apis/backup_test.go +++ b/apis/backup_test.go @@ -427,7 +427,6 @@ func TestBackupsDelete(t *testing.T) { // mock active backup with the same name to delete app.Cache().Set(core.CacheKeyActiveBackup, "test1.zip") - }, AfterTestFunc: func(t *testing.T, app *tests.TestApp, e *echo.Echo) { noTestBackupFilesChanges(t, app) diff --git a/core/base_backup.go b/core/base_backup.go index 90d9dfbf6..a1b1f3a4c 100644 --- a/core/base_backup.go +++ b/core/base_backup.go @@ -121,7 +121,7 @@ func (app *BaseApp) CreateBackup(ctx context.Context, name string) error { // // 4. Move the extracted dir content to the app "pb_data". // -// 5. Restart the app (on successfull app bootstap it will also remove the old pb_data). +// 5. Restart the app (on successful app bootstap it will also remove the old pb_data). // // If a failure occure during the restore process the dir changes are reverted. // If for whatever reason the revert is not possible, it panics. diff --git a/forms/settings_upsert.go b/forms/settings_upsert.go index 8ef5fa74c..f3ee47f4c 100644 --- a/forms/settings_upsert.go +++ b/forms/settings_upsert.go @@ -58,7 +58,7 @@ func (form *SettingsUpsert) Submit(interceptors ...InterceptorFunc[*settings.Set return runInterceptors(form.Settings, func(s *settings.Settings) error { form.Settings = s - oldSettings, err := form.app.Settings().Clone(); + oldSettings, err := form.app.Settings().Clone() if err != nil { return err } diff --git a/go.sum b/go.sum index 81d2eb7b3..acbdfaf0d 100644 --- a/go.sum +++ b/go.sum @@ -12,76 +12,42 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDe github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.44.307 h1:2R0/EPgpZcFSUwZhYImq/srjaOrOfLv5MNRzrFyAM38= -github.com/aws/aws-sdk-go v1.44.307/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.312 h1:llrElfzeqG/YOLFFKjg1xNpZCFJ2xraIi3PqSuP+95k= github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v1.19.0 h1:klAT+y3pGFBU/qVf1uzwttpBbiuozJYWzNLHioyDJ+k= -github.com/aws/aws-sdk-go-v2 v1.19.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2 v1.19.1 h1:STs0lbbpXu3byTPcnRLghs2DH0yk9qKDo27TyyJSKsM= github.com/aws/aws-sdk-go-v2 v1.19.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= -github.com/aws/aws-sdk-go-v2/config v1.18.28 h1:TINEaKyh1Td64tqFvn09iYpKiWjmHYrG1fa91q2gnqw= -github.com/aws/aws-sdk-go-v2/config v1.18.28/go.mod h1:nIL+4/8JdAuNHEjn/gPEXqtnS02Q3NXB/9Z7o5xE4+A= github.com/aws/aws-sdk-go-v2/config v1.18.30 h1:TTAXQIn31qYFUQjkW6siVrRTX1ux+sADZDOe3jsZcMg= github.com/aws/aws-sdk-go-v2/config v1.18.30/go.mod h1:+YogjT7e/t9JVu/sOnZZgxTge1G+bPNk8zOaI0QIQvE= -github.com/aws/aws-sdk-go-v2/credentials v1.13.27 h1:dz0yr/yR1jweAnsCx+BmjerUILVPQ6FS5AwF/OyG1kA= -github.com/aws/aws-sdk-go-v2/credentials v1.13.27/go.mod h1:syOqAek45ZXZp29HlnRS/BNgMIW6uiRmeuQsz4Qh2UE= github.com/aws/aws-sdk-go-v2/credentials v1.13.29 h1:KNgCpThGuZyCjq9EuuqoLDenKKMwO/x1Xx01ckDa7VI= github.com/aws/aws-sdk-go-v2/credentials v1.13.29/go.mod h1:VMq1LcmSEa9qxBlOCYTjVuGJWEEzhGmgL552jQsmhss= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.5 h1:kP3Me6Fy3vdi+9uHd7YLr6ewPxRL+PU6y15urfTaamU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.5/go.mod h1:Gj7tm95r+QsDoN2Fhuz/3npQvcZbkEf5mL70n3Xfluc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.6 h1:kortK122LvTU34CGX/F9oJpelXKkEA2j/MW48II+8+8= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.6/go.mod h1:k7IPHyHNIASI0m0RwOmCjWOTtgG+J0raqwuHH8WhWJE= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.72 h1:m0MmP89v1B0t3b8W8rtATU76KNsodak69QtiokHyEvo= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.72/go.mod h1:ylOTxIuoTL+XjH46Omv2iPjHdeGUk3SQ4hxYho4EHMA= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.74 h1:5iIuHdeN3/x3kFBENHgYQl1ZtD+ZhLBXy6IgXflUtSI= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.74/go.mod h1:kBEg7nSM1Dg9tsHX5eoFeJMmO+njnFOwxP0dPuQCEGc= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35 h1:hMUCiE3Zi5AHrRNGf5j985u0WyqI6r2NULhUfo0N/No= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35/go.mod h1:ipR5PvpSPqIqL5Mi82BxLnfMkHVbmco8kUwO2xrCi0M= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.36 h1:kbk81RlPoC6e4co7cQx2FAvH9TgbzxIqCqiosAFiB+w= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.36/go.mod h1:T8Jsn/uNL/AFOXrVYQ1YQaN1r9gN34JU1855/Lyjv+o= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29 h1:yOpYx+FTBdpk/g+sBU6Cb1H0U/TLEcYYp66mYqsPpcc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29/go.mod h1:M/eUABlDbw2uVrdAn+UsI6M727qp2fxkp8K0ejcBDUY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.30 h1:lMl8S5SB8jNCB+Sty2Em4lnu3IJytceHQd7qbmfqKL0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.30/go.mod h1:v3GSCnFxbHzt9dlWBqvA1K1f9lmWuf4ztupZBCAIVs4= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.36 h1:8r5m1BoAWkn0TDC34lUculryf7nUF25EgIMdjvGCkgo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.36/go.mod h1:Rmw2M1hMVTwiUhjwMoIBFWFJMhvJbct06sSidxInkhY= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.37 h1:BXiqvN7WuV/pMhz8CivhO8cG8icJcjnjHumif4ukQ0c= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.37/go.mod h1:d4GZ62cjnz/hjKFdAu11gAwK73bdhqaFv2O4J1gaqIs= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.27 h1:cZG7psLfqpkB6H+fIrgUDWmlzM474St1LP0jcz272yI= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.27/go.mod h1:ZdjYvJpDlefgh8/hWelJhqgqJeodxu4SmbVsSdBlL7E= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.28 h1:mGA+qm0tiLaZ04PfQtxthU3XTZ1sN44YlqVjd+1E+Pk= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.28/go.mod h1:KkWH+0gAmvloVXaVjdY6/LLwQV6TjYOZ1j5JdVm+XBc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.30 h1:Bje8Xkh2OWpjBdNfXLrnn8eZg569dUQmhgtydxAYyP0= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.30/go.mod h1:qQtIBl5OVMfmeQkz8HaVyh5DzFmmFXyvK27UgIgOr4c= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.31 h1:TGjmYwqqE6dMDSUSyQNct4MyTAgz95bPnDAjBOEgwOI= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.31/go.mod h1:HvfQ61vGBanxBijrBIpyG32mS9w6fsPZa+BwtV1uQUY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.29 h1:IiDolu/eLmuB18DRZibj77n1hHQT7z12jnGO7Ze3pLc= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.29/go.mod h1:fDbkK4o7fpPXWn8YAPmTieAMuB9mk/VgvW64uaUqxd4= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.30 h1:UcVZxLVNY4yayCmiG94Ge3l2qbc5WEB/oa4RmjoQEi0= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.30/go.mod h1:wPffyJiWWtHwvpFyn23WjAjVjMnlQOQrl02+vutBh3Y= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.4 h1:hx4WksB0NRQ9utR+2c3gEGzl6uKj3eM6PMQ6tN3lgXs= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.4/go.mod h1:JniVpqvw90sVjNqanGLufrVapWySL28fhBlYgl96Q/w= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.5 h1:B90htdoSv7OMH6QzzZ9cuZUoXVwFml0fTCDOpcGakCw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.5/go.mod h1:fdxqVm1S6xQa6obwHysh1GPowmyqO2pQuaRPWdyG2iQ= -github.com/aws/aws-sdk-go-v2/service/s3 v1.37.0 h1:PalLOEGZ/4XfQxpGZFTLaoJSmPoybnqJYotaIZEf/Rg= -github.com/aws/aws-sdk-go-v2/service/s3 v1.37.0/go.mod h1:PwyKKVL0cNkC37QwLcrhyeCrAk+5bY8O2ou7USyAS2A= github.com/aws/aws-sdk-go-v2/service/s3 v1.37.1 h1:OoFnDN7ZixctMX/Do4DgQXFvjtzQynz0p0ErQrOCeAs= github.com/aws/aws-sdk-go-v2/service/s3 v1.37.1/go.mod h1:fBgi8xY80Fv2EveXOoTM008OhKdjrxxtVH0w0h0ozYU= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.13 h1:sWDv7cMITPcZ21QdreULwxOOAmE05JjEsT6fCDtDA9k= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.13/go.mod h1:DfX0sWuT46KpcqbMhJ9QWtxAIP1VozkDWf8VAkByjYY= github.com/aws/aws-sdk-go-v2/service/sso v1.12.14 h1:gUjz7trfz9qBm0AlkKTvJHBXELi1wvw+2LA9GfD2AsM= github.com/aws/aws-sdk-go-v2/service/sso v1.12.14/go.mod h1:9kfRdJgLCbnyeqZ/DpaSwcgj9ZDYLfRpe8Sze+NrYfQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.13 h1:BFubHS/xN5bjl818QaroN6mQdjneYQ+AOx44KNXlyH4= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.13/go.mod h1:BzqsVVFduubEmzrVtUFQQIQdFqvUItF8XUq2EnS8Wog= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.14 h1:8bEtxV5UT9ucdWGXfZ7CM3caQhSHGjWnTHt0OeF7m7s= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.14/go.mod h1:nd9BG2UnexN2sDx/mk2Jd6pf3d2E61AiA8m8Fdvdx8Y= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.3 h1:e5mnydVdCVWxP+5rPAGi2PYxC7u2OZgH1ypC114H04U= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.3/go.mod h1:yVGZA1CPkmUhBdA039jXNJJG7/6t+G+EBWmFq23xqnY= github.com/aws/aws-sdk-go-v2/service/sts v1.20.1 h1:U7h9CPoyMfVoN5jUglB0LglCMP10AK4vMBsbsCKM8Yw= github.com/aws/aws-sdk-go-v2/service/sts v1.20.1/go.mod h1:BUHusg4cOA1TFGegj7x8/eoWrbdHzJfoMrXcbMQAG0k= github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= @@ -105,8 +71,6 @@ github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwu github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/domodwyer/mailyak/v3 v3.6.0 h1:MdKYNjL709iDKieDF9wGrH3PVhg9I4Tz3vmp7AcgInY= -github.com/domodwyer/mailyak/v3 v3.6.0/go.mod h1:lOm/u9CyCVWHeaAmHIdF4RiKVxKUT/H5XX10lIKAL6c= github.com/domodwyer/mailyak/v3 v3.6.1 h1:o3vjinPjPUpw/2Ng5N91JrlFDkoIKu4HTHw3U/CNemE= github.com/domodwyer/mailyak/v3 v3.6.1/go.mod h1:lOm/u9CyCVWHeaAmHIdF4RiKVxKUT/H5XX10lIKAL6c= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= @@ -347,8 +311,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.133.0 h1:N7Ym5Hl0Dpn0I0o7R1z4UpVA1GCDyS8vbPu1/ObV73A= -google.golang.org/api v0.133.0/go.mod h1:sjRL3UnjTx5UqNQS9EWr9N8p7xbHpy1k0XGRLCf3Spk= google.golang.org/api v0.134.0 h1:ktL4Goua+UBgoP1eL1/60LwZJqa1sIzkLmvoR3hR6Gw= google.golang.org/api v0.134.0/go.mod h1:sjRL3UnjTx5UqNQS9EWr9N8p7xbHpy1k0XGRLCf3Spk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -361,8 +323,6 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753 h1:+VoAg+OKmWaommL56xmZSE2sUK8A7m6SUO7X89F2tbw= google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753 h1:lCbbUxUDD+DiXx9Q6F/ttL0aAu7N2pz8XnmMm8ZW4NE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146 h1:0PjALPu/U/4OVXKQM2P8b8NJGd4V+xbZSP+uuBJpGm0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e h1:S83+ibolgyZ0bqz7KEsUOPErxcv4VzlszxY+31OfB/E= google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -370,8 +330,6 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/plugins/ghupdate/ghupdate.go b/plugins/ghupdate/ghupdate.go index 6b7fcf969..e2db88092 100644 --- a/plugins/ghupdate/ghupdate.go +++ b/plugins/ghupdate/ghupdate.go @@ -243,7 +243,7 @@ func (p *plugin) update(withBackup bool) error { } color.HiBlack("---") - color.Green("Update completed sucessfully! You can start the executable as usual.") + color.Green("Update completed successfully! You can start the executable as usual.") return nil } diff --git a/plugins/jsvm/binds_test.go b/plugins/jsvm/binds_test.go index 2e0ee928b..2f7b6ac93 100644 --- a/plugins/jsvm/binds_test.go +++ b/plugins/jsvm/binds_test.go @@ -211,6 +211,9 @@ func TestBaseBindsMailerMessage(t *testing.T) { } raw, err := json.Marshal(m) + if err != nil { + t.Fatal(err) + } expected := `{"from":{"Name":"test_from","Address":"test_from@example.com"},"to":[{"Name":"test_to1","Address":"test_to1@example.com"},{"Name":"test_to2","Address":"test_to2@example.com"}],"bcc":[{"Name":"test_bcc1","Address":"test_bcc1@example.com"},{"Name":"test_bcc2","Address":"test_bcc2@example.com"}],"cc":[{"Name":"test_cc1","Address":"test_cc1@example.com"},{"Name":"test_cc2","Address":"test_cc2@example.com"}],"subject":"test_subject","html":"test_html","text":"test_text","headers":{"header1":"a","header2":"b"},"attachments":null}` diff --git a/plugins/jsvm/internal/types/generated/types.d.ts b/plugins/jsvm/internal/types/generated/types.d.ts index fa97b74b1..55e2059e4 100644 --- a/plugins/jsvm/internal/types/generated/types.d.ts +++ b/plugins/jsvm/internal/types/generated/types.d.ts @@ -1484,8 +1484,8 @@ namespace os { */ readFrom(r: io.Reader): number } - type _subphrWW = io.Writer - interface onlyWriter extends _subphrWW { + type _subooimS = io.Writer + interface onlyWriter extends _subooimS { } interface File { /** @@ -2109,8 +2109,8 @@ namespace os { /** * File represents an open file descriptor. */ - type _subMiLtR = file - interface File extends _subMiLtR { + type _subwEsLX = file + interface File extends _subwEsLX { } /** * A FileInfo describes a file and is returned by Stat and Lstat. @@ -2161,644 +2161,215 @@ namespace os { } /** - * Package filepath implements utility routines for manipulating filename paths - * in a way compatible with the target operating system-defined file paths. - * - * The filepath package uses either forward slashes or backslashes, - * depending on the operating system. To process paths such as URLs - * that always use forward slashes regardless of the operating - * system, see the path package. + * Package dbx provides a set of DB-agnostic and easy-to-use query building methods for relational databases. */ -namespace filepath { - interface match { +namespace dbx { + /** + * Builder supports building SQL statements in a DB-agnostic way. + * Builder mainly provides two sets of query building methods: those building SELECT statements + * and those manipulating DB data or schema (e.g. INSERT statements, CREATE TABLE statements). + */ + interface Builder { /** - * Match reports whether name matches the shell file name pattern. - * The pattern syntax is: - * - * ``` - * pattern: - * { term } - * term: - * '*' matches any sequence of non-Separator characters - * '?' matches any single non-Separator character - * '[' [ '^' ] { character-range } ']' - * character class (must be non-empty) - * c matches character c (c != '*', '?', '\\', '[') - * '\\' c matches character c - * - * character-range: - * c matches character c (c != '\\', '-', ']') - * '\\' c matches character c - * lo '-' hi matches character c for lo <= c <= hi - * ``` - * - * Match requires pattern to match all of name, not just a substring. - * The only possible returned error is ErrBadPattern, when pattern - * is malformed. - * - * On Windows, escaping is disabled. Instead, '\\' is treated as - * path separator. + * NewQuery creates a new Query object with the given SQL statement. + * The SQL statement may contain parameter placeholders which can be bound with actual parameter + * values before the statement is executed. */ - (pattern: string): boolean - } - interface glob { + newQuery(_arg0: string): (Query | undefined) /** - * Glob returns the names of all files matching pattern or nil - * if there is no matching file. The syntax of patterns is the same - * as in Match. The pattern may describe hierarchical names such as - * /usr/*\/bin/ed (assuming the Separator is '/'). - * - * Glob ignores file system errors such as I/O errors reading directories. - * The only possible returned error is ErrBadPattern, when pattern - * is malformed. + * Select returns a new SelectQuery object that can be used to build a SELECT statement. + * The parameters to this method should be the list column names to be selected. + * A column name may have an optional alias name. For example, Select("id", "my_name AS name"). */ - (pattern: string): Array - } - /** - * A lazybuf is a lazily constructed path buffer. - * It supports append, reading previously appended bytes, - * and retrieving the final string. It does not allocate a buffer - * to hold the output until that output diverges from s. - */ - interface lazybuf { - } - interface clean { + select(..._arg0: string[]): (SelectQuery | undefined) /** - * Clean returns the shortest path name equivalent to path - * by purely lexical processing. It applies the following rules - * iteratively until no further processing can be done: - * - * ``` - * 1. Replace multiple Separator elements with a single one. - * 2. Eliminate each . path name element (the current directory). - * 3. Eliminate each inner .. path name element (the parent directory) - * along with the non-.. element that precedes it. - * 4. Eliminate .. elements that begin a rooted path: - * that is, replace "/.." by "/" at the beginning of a path, - * assuming Separator is '/'. - * ``` - * - * The returned path ends in a slash only if it represents a root directory, - * such as "/" on Unix or `C:\` on Windows. - * - * Finally, any occurrences of slash are replaced by Separator. - * - * If the result of this process is an empty string, Clean - * returns the string ".". - * - * See also Rob Pike, ``Lexical File Names in Plan 9 or - * Getting Dot-Dot Right,'' - * https://9p.io/sys/doc/lexnames.html + * ModelQuery returns a new ModelQuery object that can be used to perform model insertion, update, and deletion. + * The parameter to this method should be a pointer to the model struct that needs to be inserted, updated, or deleted. */ - (path: string): string - } - interface toSlash { + model(_arg0: { + }): (ModelQuery | undefined) /** - * ToSlash returns the result of replacing each separator character - * in path with a slash ('/') character. Multiple separators are - * replaced by multiple slashes. + * GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID. */ - (path: string): string - } - interface fromSlash { + generatePlaceholder(_arg0: number): string /** - * FromSlash returns the result of replacing each slash ('/') character - * in path with a separator character. Multiple slashes are replaced - * by multiple separators. + * Quote quotes a string so that it can be embedded in a SQL statement as a string value. */ - (path: string): string - } - interface splitList { + quote(_arg0: string): string /** - * SplitList splits a list of paths joined by the OS-specific ListSeparator, - * usually found in PATH or GOPATH environment variables. - * Unlike strings.Split, SplitList returns an empty slice when passed an empty - * string. + * QuoteSimpleTableName quotes a simple table name. + * A simple table name does not contain any schema prefix. */ - (path: string): Array - } - interface split { + quoteSimpleTableName(_arg0: string): string /** - * Split splits path immediately following the final Separator, - * separating it into a directory and file name component. - * If there is no Separator in path, Split returns an empty dir - * and file set to path. - * The returned values have the property that path = dir+file. + * QuoteSimpleColumnName quotes a simple column name. + * A simple column name does not contain any table prefix. */ - (path: string): string - } - interface join { + quoteSimpleColumnName(_arg0: string): string /** - * Join joins any number of path elements into a single path, - * separating them with an OS specific Separator. Empty elements - * are ignored. The result is Cleaned. However, if the argument - * list is empty or all its elements are empty, Join returns - * an empty string. - * On Windows, the result will only be a UNC path if the first - * non-empty element is a UNC path. + * QueryBuilder returns the query builder supporting the current DB. */ - (...elem: string[]): string - } - interface ext { + queryBuilder(): QueryBuilder /** - * Ext returns the file name extension used by path. - * The extension is the suffix beginning at the final dot - * in the final element of path; it is empty if there is - * no dot. + * Insert creates a Query that represents an INSERT SQL statement. + * The keys of cols are the column names, while the values of cols are the corresponding column + * values to be inserted. */ - (path: string): string - } - interface evalSymlinks { + insert(table: string, cols: Params): (Query | undefined) /** - * EvalSymlinks returns the path name after the evaluation of any symbolic - * links. - * If path is relative the result will be relative to the current directory, - * unless one of the components is an absolute symbolic link. - * EvalSymlinks calls Clean on the result. + * Upsert creates a Query that represents an UPSERT SQL statement. + * Upsert inserts a row into the table if the primary key or unique index is not found. + * Otherwise it will update the row with the new values. + * The keys of cols are the column names, while the values of cols are the corresponding column + * values to be inserted. */ - (path: string): string - } - interface abs { + upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined) /** - * Abs returns an absolute representation of path. - * If the path is not absolute it will be joined with the current - * working directory to turn it into an absolute path. The absolute - * path name for a given file is not guaranteed to be unique. - * Abs calls Clean on the result. + * Update creates a Query that represents an UPDATE SQL statement. + * The keys of cols are the column names, while the values of cols are the corresponding new column + * values. If the "where" expression is nil, the UPDATE SQL statement will have no WHERE clause + * (be careful in this case as the SQL statement will update ALL rows in the table). */ - (path: string): string - } - interface rel { + update(table: string, cols: Params, where: Expression): (Query | undefined) /** - * Rel returns a relative path that is lexically equivalent to targpath when - * joined to basepath with an intervening separator. That is, - * Join(basepath, Rel(basepath, targpath)) is equivalent to targpath itself. - * On success, the returned path will always be relative to basepath, - * even if basepath and targpath share no elements. - * An error is returned if targpath can't be made relative to basepath or if - * knowing the current working directory would be necessary to compute it. - * Rel calls Clean on the result. + * Delete creates a Query that represents a DELETE SQL statement. + * If the "where" expression is nil, the DELETE SQL statement will have no WHERE clause + * (be careful in this case as the SQL statement will delete ALL rows in the table). */ - (basepath: string): string - } - /** - * WalkFunc is the type of the function called by Walk to visit each - * file or directory. - * - * The path argument contains the argument to Walk as a prefix. - * That is, if Walk is called with root argument "dir" and finds a file - * named "a" in that directory, the walk function will be called with - * argument "dir/a". - * - * The directory and file are joined with Join, which may clean the - * directory name: if Walk is called with the root argument "x/../dir" - * and finds a file named "a" in that directory, the walk function will - * be called with argument "dir/a", not "x/../dir/a". - * - * The info argument is the fs.FileInfo for the named path. - * - * The error result returned by the function controls how Walk continues. - * If the function returns the special value SkipDir, Walk skips the - * current directory (path if info.IsDir() is true, otherwise path's - * parent directory). Otherwise, if the function returns a non-nil error, - * Walk stops entirely and returns that error. - * - * The err argument reports an error related to path, signaling that Walk - * will not walk into that directory. The function can decide how to - * handle that error; as described earlier, returning the error will - * cause Walk to stop walking the entire tree. - * - * Walk calls the function with a non-nil err argument in two cases. - * - * First, if an os.Lstat on the root directory or any directory or file - * in the tree fails, Walk calls the function with path set to that - * directory or file's path, info set to nil, and err set to the error - * from os.Lstat. - * - * Second, if a directory's Readdirnames method fails, Walk calls the - * function with path set to the directory's path, info, set to an - * fs.FileInfo describing the directory, and err set to the error from - * Readdirnames. - */ - interface WalkFunc {(path: string, info: fs.FileInfo, err: Error): void } - interface walkDir { + delete(table: string, where: Expression): (Query | undefined) /** - * WalkDir walks the file tree rooted at root, calling fn for each file or - * directory in the tree, including root. - * - * All errors that arise visiting files and directories are filtered by fn: - * see the fs.WalkDirFunc documentation for details. - * - * The files are walked in lexical order, which makes the output deterministic - * but requires WalkDir to read an entire directory into memory before proceeding - * to walk that directory. - * - * WalkDir does not follow symbolic links. + * CreateTable creates a Query that represents a CREATE TABLE SQL statement. + * The keys of cols are the column names, while the values of cols are the corresponding column types. + * The optional "options" parameters will be appended to the generated SQL statement. */ - (root: string, fn: fs.WalkDirFunc): void - } - interface statDirEntry { - } - interface statDirEntry { - name(): string - } - interface statDirEntry { - isDir(): boolean - } - interface statDirEntry { - type(): fs.FileMode - } - interface statDirEntry { - info(): fs.FileInfo - } - interface walk { + createTable(table: string, cols: _TygojaDict, ...options: string[]): (Query | undefined) /** - * Walk walks the file tree rooted at root, calling fn for each file or - * directory in the tree, including root. - * - * All errors that arise visiting files and directories are filtered by fn: - * see the WalkFunc documentation for details. - * - * The files are walked in lexical order, which makes the output deterministic - * but requires Walk to read an entire directory into memory before proceeding - * to walk that directory. - * - * Walk does not follow symbolic links. - * - * Walk is less efficient than WalkDir, introduced in Go 1.16, - * which avoids calling os.Lstat on every visited file or directory. + * RenameTable creates a Query that can be used to rename a table. */ - (root: string, fn: WalkFunc): void - } - interface base { + renameTable(oldName: string): (Query | undefined) /** - * Base returns the last element of path. - * Trailing path separators are removed before extracting the last element. - * If the path is empty, Base returns ".". - * If the path consists entirely of separators, Base returns a single separator. + * DropTable creates a Query that can be used to drop a table. */ - (path: string): string - } - interface dir { + dropTable(table: string): (Query | undefined) /** - * Dir returns all but the last element of path, typically the path's directory. - * After dropping the final element, Dir calls Clean on the path and trailing - * slashes are removed. - * If the path is empty, Dir returns ".". - * If the path consists entirely of separators, Dir returns a single separator. - * The returned path does not end in a separator unless it is the root directory. + * TruncateTable creates a Query that can be used to truncate a table. */ - (path: string): string - } - interface volumeName { + truncateTable(table: string): (Query | undefined) /** - * VolumeName returns leading volume name. - * Given "C:\foo\bar" it returns "C:" on Windows. - * Given "\\host\share\foo" it returns "\\host\share". - * On other platforms it returns "". + * AddColumn creates a Query that can be used to add a column to a table. */ - (path: string): string - } - interface isAbs { + addColumn(table: string): (Query | undefined) /** - * IsAbs reports whether the path is absolute. + * DropColumn creates a Query that can be used to drop a column from a table. */ - (path: string): boolean - } - interface hasPrefix { + dropColumn(table: string): (Query | undefined) /** - * HasPrefix exists for historical compatibility and should not be used. - * - * Deprecated: HasPrefix does not respect path boundaries and - * does not ignore case when required. + * RenameColumn creates a Query that can be used to rename a column in a table. */ - (p: string): boolean - } -} - -namespace security { - // @ts-ignore - import crand = rand - interface s256Challenge { + renameColumn(table: string): (Query | undefined) /** - * S256Challenge creates base64 encoded sha256 challenge string derived from code. - * The padding of the result base64 string is stripped per [RFC 7636]. - * - * [RFC 7636]: https://datatracker.ietf.org/doc/html/rfc7636#section-4.2 + * AlterColumn creates a Query that can be used to change the definition of a table column. */ - (code: string): string - } - interface encrypt { + alterColumn(table: string): (Query | undefined) /** - * Encrypt encrypts data with key (must be valid 32 char aes key). + * AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table. + * The "name" parameter specifies the name of the primary key constraint. */ - (data: string, key: string): string - } - interface decrypt { + addPrimaryKey(table: string, ...cols: string[]): (Query | undefined) /** - * Decrypt decrypts encrypted text with key (must be valid 32 chars aes key). + * DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table. */ - (cipherText: string, key: string): string - } - interface parseUnverifiedJWT { + dropPrimaryKey(table: string): (Query | undefined) /** - * ParseUnverifiedJWT parses JWT token and returns its claims - * but DOES NOT verify the signature. - * - * It verifies only the exp, iat and nbf claims. + * AddForeignKey creates a Query that can be used to add a foreign key constraint to a table. + * The length of cols and refCols must be the same as they refer to the primary and referential columns. + * The optional "options" parameters will be appended to the SQL statement. They can be used to + * specify options such as "ON DELETE CASCADE". */ - (token: string): jwt.MapClaims - } - interface parseJWT { + addForeignKey(table: string, cols: Array, refTable: string, ...options: string[]): (Query | undefined) /** - * ParseJWT verifies and parses JWT token and returns its claims. + * DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table. */ - (token: string, verificationKey: string): jwt.MapClaims - } - interface newJWT { + dropForeignKey(table: string): (Query | undefined) /** - * NewJWT generates and returns new HS256 signed JWT token. + * CreateIndex creates a Query that can be used to create an index for a table. */ - (payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string - } - interface newToken { + createIndex(table: string, ...cols: string[]): (Query | undefined) /** - * Deprecated: - * Consider replacing with NewJWT(). - * - * NewToken is a legacy alias for NewJWT that generates a HS256 signed JWT token. + * CreateUniqueIndex creates a Query that can be used to create a unique index for a table. */ - (payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string - } - // @ts-ignore - import cryptoRand = rand - // @ts-ignore - import mathRand = rand - interface randomString { + createUniqueIndex(table: string, ...cols: string[]): (Query | undefined) /** - * RandomString generates a cryptographically random string with the specified length. - * - * The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding. + * DropIndex creates a Query that can be used to remove the named index from a table. */ - (length: number): string + dropIndex(table: string): (Query | undefined) } - interface randomStringWithAlphabet { + /** + * BaseBuilder provides a basic implementation of the Builder interface. + */ + interface BaseBuilder { + } + interface newBaseBuilder { /** - * RandomStringWithAlphabet generates a cryptographically random string - * with the specified length and characters set. - * - * It panics if for some reason rand.Int returns a non-nil error. + * NewBaseBuilder creates a new BaseBuilder instance. */ - (length: number, alphabet: string): string + (db: DB, executor: Executor): (BaseBuilder | undefined) } - interface pseudorandomString { + interface BaseBuilder { /** - * PseudorandomString generates a pseudorandom string with the specified length. - * - * The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding. - * - * For a cryptographically random string (but a little bit slower) use RandomString instead. + * DB returns the DB instance that this builder is associated with. */ - (length: number): string + db(): (DB | undefined) } - interface pseudorandomStringWithAlphabet { + interface BaseBuilder { /** - * PseudorandomStringWithAlphabet generates a pseudorandom string - * with the specified length and characters set. - * - * For a cryptographically random (but a little bit slower) use RandomStringWithAlphabet instead. + * Executor returns the executor object (a DB instance or a transaction) for executing SQL statements. */ - (length: number, alphabet: string): string - } -} - -/** - * Package validation provides configurable and extensible rules for validating data of various types. - */ -namespace ozzo_validation { - /** - * Error interface represents an validation error - */ - interface Error { - error(): string - code(): string - message(): string - setMessage(_arg0: string): Error - params(): _TygojaDict - setParams(_arg0: _TygojaDict): Error + executor(): Executor } -} - -/** - * Package dbx provides a set of DB-agnostic and easy-to-use query building methods for relational databases. - */ -namespace dbx { - /** - * Builder supports building SQL statements in a DB-agnostic way. - * Builder mainly provides two sets of query building methods: those building SELECT statements - * and those manipulating DB data or schema (e.g. INSERT statements, CREATE TABLE statements). - */ - interface Builder { + interface BaseBuilder { /** * NewQuery creates a new Query object with the given SQL statement. * The SQL statement may contain parameter placeholders which can be bound with actual parameter * values before the statement is executed. */ - newQuery(_arg0: string): (Query | undefined) - /** - * Select returns a new SelectQuery object that can be used to build a SELECT statement. - * The parameters to this method should be the list column names to be selected. - * A column name may have an optional alias name. For example, Select("id", "my_name AS name"). - */ - select(..._arg0: string[]): (SelectQuery | undefined) - /** - * ModelQuery returns a new ModelQuery object that can be used to perform model insertion, update, and deletion. - * The parameter to this method should be a pointer to the model struct that needs to be inserted, updated, or deleted. - */ - model(_arg0: { - }): (ModelQuery | undefined) + newQuery(sql: string): (Query | undefined) + } + interface BaseBuilder { /** * GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID. */ generatePlaceholder(_arg0: number): string + } + interface BaseBuilder { /** * Quote quotes a string so that it can be embedded in a SQL statement as a string value. */ - quote(_arg0: string): string + quote(s: string): string + } + interface BaseBuilder { /** * QuoteSimpleTableName quotes a simple table name. * A simple table name does not contain any schema prefix. */ - quoteSimpleTableName(_arg0: string): string + quoteSimpleTableName(s: string): string + } + interface BaseBuilder { /** * QuoteSimpleColumnName quotes a simple column name. * A simple column name does not contain any table prefix. */ - quoteSimpleColumnName(_arg0: string): string - /** - * QueryBuilder returns the query builder supporting the current DB. - */ - queryBuilder(): QueryBuilder + quoteSimpleColumnName(s: string): string + } + interface BaseBuilder { /** * Insert creates a Query that represents an INSERT SQL statement. * The keys of cols are the column names, while the values of cols are the corresponding column * values to be inserted. */ insert(table: string, cols: Params): (Query | undefined) - /** - * Upsert creates a Query that represents an UPSERT SQL statement. - * Upsert inserts a row into the table if the primary key or unique index is not found. - * Otherwise it will update the row with the new values. - * The keys of cols are the column names, while the values of cols are the corresponding column - * values to be inserted. - */ - upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined) - /** - * Update creates a Query that represents an UPDATE SQL statement. - * The keys of cols are the column names, while the values of cols are the corresponding new column - * values. If the "where" expression is nil, the UPDATE SQL statement will have no WHERE clause - * (be careful in this case as the SQL statement will update ALL rows in the table). - */ - update(table: string, cols: Params, where: Expression): (Query | undefined) - /** - * Delete creates a Query that represents a DELETE SQL statement. - * If the "where" expression is nil, the DELETE SQL statement will have no WHERE clause - * (be careful in this case as the SQL statement will delete ALL rows in the table). - */ - delete(table: string, where: Expression): (Query | undefined) - /** - * CreateTable creates a Query that represents a CREATE TABLE SQL statement. - * The keys of cols are the column names, while the values of cols are the corresponding column types. - * The optional "options" parameters will be appended to the generated SQL statement. - */ - createTable(table: string, cols: _TygojaDict, ...options: string[]): (Query | undefined) - /** - * RenameTable creates a Query that can be used to rename a table. - */ - renameTable(oldName: string): (Query | undefined) - /** - * DropTable creates a Query that can be used to drop a table. - */ - dropTable(table: string): (Query | undefined) - /** - * TruncateTable creates a Query that can be used to truncate a table. - */ - truncateTable(table: string): (Query | undefined) - /** - * AddColumn creates a Query that can be used to add a column to a table. - */ - addColumn(table: string): (Query | undefined) - /** - * DropColumn creates a Query that can be used to drop a column from a table. - */ - dropColumn(table: string): (Query | undefined) - /** - * RenameColumn creates a Query that can be used to rename a column in a table. - */ - renameColumn(table: string): (Query | undefined) - /** - * AlterColumn creates a Query that can be used to change the definition of a table column. - */ - alterColumn(table: string): (Query | undefined) - /** - * AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table. - * The "name" parameter specifies the name of the primary key constraint. - */ - addPrimaryKey(table: string, ...cols: string[]): (Query | undefined) - /** - * DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table. - */ - dropPrimaryKey(table: string): (Query | undefined) - /** - * AddForeignKey creates a Query that can be used to add a foreign key constraint to a table. - * The length of cols and refCols must be the same as they refer to the primary and referential columns. - * The optional "options" parameters will be appended to the SQL statement. They can be used to - * specify options such as "ON DELETE CASCADE". - */ - addForeignKey(table: string, cols: Array, refTable: string, ...options: string[]): (Query | undefined) - /** - * DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table. - */ - dropForeignKey(table: string): (Query | undefined) - /** - * CreateIndex creates a Query that can be used to create an index for a table. - */ - createIndex(table: string, ...cols: string[]): (Query | undefined) - /** - * CreateUniqueIndex creates a Query that can be used to create a unique index for a table. - */ - createUniqueIndex(table: string, ...cols: string[]): (Query | undefined) - /** - * DropIndex creates a Query that can be used to remove the named index from a table. - */ - dropIndex(table: string): (Query | undefined) - } - /** - * BaseBuilder provides a basic implementation of the Builder interface. - */ - interface BaseBuilder { - } - interface newBaseBuilder { - /** - * NewBaseBuilder creates a new BaseBuilder instance. - */ - (db: DB, executor: Executor): (BaseBuilder | undefined) - } - interface BaseBuilder { - /** - * DB returns the DB instance that this builder is associated with. - */ - db(): (DB | undefined) - } - interface BaseBuilder { - /** - * Executor returns the executor object (a DB instance or a transaction) for executing SQL statements. - */ - executor(): Executor - } - interface BaseBuilder { - /** - * NewQuery creates a new Query object with the given SQL statement. - * The SQL statement may contain parameter placeholders which can be bound with actual parameter - * values before the statement is executed. - */ - newQuery(sql: string): (Query | undefined) - } - interface BaseBuilder { - /** - * GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID. - */ - generatePlaceholder(_arg0: number): string - } - interface BaseBuilder { - /** - * Quote quotes a string so that it can be embedded in a SQL statement as a string value. - */ - quote(s: string): string - } - interface BaseBuilder { - /** - * QuoteSimpleTableName quotes a simple table name. - * A simple table name does not contain any schema prefix. - */ - quoteSimpleTableName(s: string): string - } - interface BaseBuilder { - /** - * QuoteSimpleColumnName quotes a simple column name. - * A simple column name does not contain any table prefix. - */ - quoteSimpleColumnName(s: string): string - } - interface BaseBuilder { - /** - * Insert creates a Query that represents an INSERT SQL statement. - * The keys of cols are the column names, while the values of cols are the corresponding column - * values to be inserted. - */ - insert(table: string, cols: Params): (Query | undefined) - } - interface BaseBuilder { + } + interface BaseBuilder { /** * Upsert creates a Query that represents an UPSERT SQL statement. * Upsert inserts a row into the table if the primary key or unique index is not found. @@ -2924,14 +2495,14 @@ namespace dbx { /** * MssqlBuilder is the builder for SQL Server databases. */ - type _subwMHpB = BaseBuilder - interface MssqlBuilder extends _subwMHpB { + type _subQFYGj = BaseBuilder + interface MssqlBuilder extends _subQFYGj { } /** * MssqlQueryBuilder is the query builder for SQL Server databases. */ - type _subsOXHE = BaseQueryBuilder - interface MssqlQueryBuilder extends _subsOXHE { + type _subBDUVT = BaseQueryBuilder + interface MssqlQueryBuilder extends _subBDUVT { } interface newMssqlBuilder { /** @@ -3002,8 +2573,8 @@ namespace dbx { /** * MysqlBuilder is the builder for MySQL databases. */ - type _subwbWnn = BaseBuilder - interface MysqlBuilder extends _subwbWnn { + type _subNxYbQ = BaseBuilder + interface MysqlBuilder extends _subNxYbQ { } interface newMysqlBuilder { /** @@ -3078,14 +2649,14 @@ namespace dbx { /** * OciBuilder is the builder for Oracle databases. */ - type _subAqtpS = BaseBuilder - interface OciBuilder extends _subAqtpS { + type _subwFknA = BaseBuilder + interface OciBuilder extends _subwFknA { } /** * OciQueryBuilder is the query builder for Oracle databases. */ - type _subNGnwl = BaseQueryBuilder - interface OciQueryBuilder extends _subNGnwl { + type _subaYNBr = BaseQueryBuilder + interface OciQueryBuilder extends _subaYNBr { } interface newOciBuilder { /** @@ -3148,8 +2719,8 @@ namespace dbx { /** * PgsqlBuilder is the builder for PostgreSQL databases. */ - type _subpDhOJ = BaseBuilder - interface PgsqlBuilder extends _subpDhOJ { + type _subPgmKZ = BaseBuilder + interface PgsqlBuilder extends _subPgmKZ { } interface newPgsqlBuilder { /** @@ -3216,8 +2787,8 @@ namespace dbx { /** * SqliteBuilder is the builder for SQLite databases. */ - type _subfxnWf = BaseBuilder - interface SqliteBuilder extends _subfxnWf { + type _subFCRXY = BaseBuilder + interface SqliteBuilder extends _subFCRXY { } interface newSqliteBuilder { /** @@ -3316,8 +2887,8 @@ namespace dbx { /** * StandardBuilder is the builder that is used by DB for an unknown driver. */ - type _subLuPnO = BaseBuilder - interface StandardBuilder extends _subLuPnO { + type _subiRjdl = BaseBuilder + interface StandardBuilder extends _subiRjdl { } interface newStandardBuilder { /** @@ -3383,8 +2954,8 @@ namespace dbx { * DB enhances sql.DB by providing a set of DB-agnostic query building methods. * DB allows easier query building and population of data into Go variables. */ - type _sublgNCo = Builder - interface DB extends _sublgNCo { + type _subFAmYa = Builder + interface DB extends _subFAmYa { /** * FieldMapper maps struct fields to DB columns. Defaults to DefaultFieldMapFunc. */ @@ -4182,8 +3753,8 @@ namespace dbx { * Rows enhances sql.Rows by providing additional data query methods. * Rows can be obtained by calling Query.Rows(). It is mainly used to populate data row by row. */ - type _subwtwPR = sql.Rows - interface Rows extends _subwtwPR { + type _subefvtL = sql.Rows + interface Rows extends _subefvtL { } interface Rows { /** @@ -4540,8 +4111,8 @@ namespace dbx { }): string } interface structInfo { } - type _subOUFKC = structInfo - interface structValue extends _subOUFKC { + type _subjLHzU = structInfo + interface structValue extends _subjLHzU { } interface fieldInfo { } @@ -4579,8 +4150,8 @@ namespace dbx { /** * Tx enhances sql.Tx with additional querying methods. */ - type _subMbkVj = Builder - interface Tx extends _subMbkVj { + type _subBZgEW = Builder + interface Tx extends _subBZgEW { } interface Tx { /** @@ -4597,1977 +4168,2341 @@ namespace dbx { } /** - * Package exec runs external commands. It wraps os.StartProcess to make it - * easier to remap stdin and stdout, connect I/O with pipes, and do other - * adjustments. - * - * Unlike the "system" library call from C and other languages, the - * os/exec package intentionally does not invoke the system shell and - * does not expand any glob patterns or handle other expansions, - * pipelines, or redirections typically done by shells. The package - * behaves more like C's "exec" family of functions. To expand glob - * patterns, either call the shell directly, taking care to escape any - * dangerous input, or use the path/filepath package's Glob function. - * To expand environment variables, use package os's ExpandEnv. + * Package filepath implements utility routines for manipulating filename paths + * in a way compatible with the target operating system-defined file paths. * - * Note that the examples in this package assume a Unix system. - * They may not run on Windows, and they do not run in the Go Playground - * used by golang.org and godoc.org. + * The filepath package uses either forward slashes or backslashes, + * depending on the operating system. To process paths such as URLs + * that always use forward slashes regardless of the operating + * system, see the path package. */ -namespace exec { - interface command { +namespace filepath { + interface match { /** - * Command returns the Cmd struct to execute the named program with - * the given arguments. + * Match reports whether name matches the shell file name pattern. + * The pattern syntax is: * - * It sets only the Path and Args in the returned structure. + * ``` + * pattern: + * { term } + * term: + * '*' matches any sequence of non-Separator characters + * '?' matches any single non-Separator character + * '[' [ '^' ] { character-range } ']' + * character class (must be non-empty) + * c matches character c (c != '*', '?', '\\', '[') + * '\\' c matches character c * - * If name contains no path separators, Command uses LookPath to - * resolve name to a complete path if possible. Otherwise it uses name - * directly as Path. + * character-range: + * c matches character c (c != '\\', '-', ']') + * '\\' c matches character c + * lo '-' hi matches character c for lo <= c <= hi + * ``` * - * The returned Cmd's Args field is constructed from the command name - * followed by the elements of arg, so arg should not include the - * command name itself. For example, Command("echo", "hello"). - * Args[0] is always name, not the possibly resolved Path. + * Match requires pattern to match all of name, not just a substring. + * The only possible returned error is ErrBadPattern, when pattern + * is malformed. * - * On Windows, processes receive the whole command line as a single string - * and do their own parsing. Command combines and quotes Args into a command - * line string with an algorithm compatible with applications using - * CommandLineToArgvW (which is the most common way). Notable exceptions are - * msiexec.exe and cmd.exe (and thus, all batch files), which have a different - * unquoting algorithm. In these or other similar cases, you can do the - * quoting yourself and provide the full command line in SysProcAttr.CmdLine, - * leaving Args empty. + * On Windows, escaping is disabled. Instead, '\\' is treated as + * path separator. */ - (name: string, ...arg: string[]): (Cmd | undefined) + (pattern: string): boolean } -} - -namespace filesystem { - /** - * FileReader defines an interface for a file resource reader. - */ - interface FileReader { - open(): io.ReadSeekCloser + interface glob { + /** + * Glob returns the names of all files matching pattern or nil + * if there is no matching file. The syntax of patterns is the same + * as in Match. The pattern may describe hierarchical names such as + * /usr/*\/bin/ed (assuming the Separator is '/'). + * + * Glob ignores file system errors such as I/O errors reading directories. + * The only possible returned error is ErrBadPattern, when pattern + * is malformed. + */ + (pattern: string): Array } /** - * File defines a single file [io.ReadSeekCloser] resource. - * - * The file could be from a local path, multipipart/formdata header, etc. + * A lazybuf is a lazily constructed path buffer. + * It supports append, reading previously appended bytes, + * and retrieving the final string. It does not allocate a buffer + * to hold the output until that output diverges from s. */ - interface File { - name: string - originalName: string - size: number - reader: FileReader + interface lazybuf { } - interface newFileFromPath { + interface clean { /** - * NewFileFromPath creates a new File instance from the provided local file path. + * Clean returns the shortest path name equivalent to path + * by purely lexical processing. It applies the following rules + * iteratively until no further processing can be done: + * + * ``` + * 1. Replace multiple Separator elements with a single one. + * 2. Eliminate each . path name element (the current directory). + * 3. Eliminate each inner .. path name element (the parent directory) + * along with the non-.. element that precedes it. + * 4. Eliminate .. elements that begin a rooted path: + * that is, replace "/.." by "/" at the beginning of a path, + * assuming Separator is '/'. + * ``` + * + * The returned path ends in a slash only if it represents a root directory, + * such as "/" on Unix or `C:\` on Windows. + * + * Finally, any occurrences of slash are replaced by Separator. + * + * If the result of this process is an empty string, Clean + * returns the string ".". + * + * See also Rob Pike, ``Lexical File Names in Plan 9 or + * Getting Dot-Dot Right,'' + * https://9p.io/sys/doc/lexnames.html */ - (path: string): (File | undefined) + (path: string): string } - interface newFileFromBytes { + interface toSlash { /** - * NewFileFromBytes creates a new File instance from the provided byte slice. + * ToSlash returns the result of replacing each separator character + * in path with a slash ('/') character. Multiple separators are + * replaced by multiple slashes. */ - (b: string, name: string): (File | undefined) + (path: string): string } - interface newFileFromMultipart { + interface fromSlash { /** - * NewFileFromMultipart creates a new File instace from the provided multipart header. + * FromSlash returns the result of replacing each slash ('/') character + * in path with a separator character. Multiple slashes are replaced + * by multiple separators. */ - (mh: multipart.FileHeader): (File | undefined) - } - /** - * MultipartReader defines a FileReader from [multipart.FileHeader]. - */ - interface MultipartReader { - header?: multipart.FileHeader + (path: string): string } - interface MultipartReader { + interface splitList { /** - * Open implements the [filesystem.FileReader] interface. + * SplitList splits a list of paths joined by the OS-specific ListSeparator, + * usually found in PATH or GOPATH environment variables. + * Unlike strings.Split, SplitList returns an empty slice when passed an empty + * string. */ - open(): io.ReadSeekCloser - } - /** - * PathReader defines a FileReader from a local file path. - */ - interface PathReader { - path: string + (path: string): Array } - interface PathReader { + interface split { /** - * Open implements the [filesystem.FileReader] interface. + * Split splits path immediately following the final Separator, + * separating it into a directory and file name component. + * If there is no Separator in path, Split returns an empty dir + * and file set to path. + * The returned values have the property that path = dir+file. */ - open(): io.ReadSeekCloser - } - /** - * BytesReader defines a FileReader from bytes content. - */ - interface BytesReader { - bytes: string + (path: string): string } - interface BytesReader { + interface join { /** - * Open implements the [filesystem.FileReader] interface. + * Join joins any number of path elements into a single path, + * separating them with an OS specific Separator. Empty elements + * are ignored. The result is Cleaned. However, if the argument + * list is empty or all its elements are empty, Join returns + * an empty string. + * On Windows, the result will only be a UNC path if the first + * non-empty element is a UNC path. */ - open(): io.ReadSeekCloser - } - type _subqimbF = bytes.Reader - interface bytesReadSeekCloser extends _subqimbF { + (...elem: string[]): string } - interface bytesReadSeekCloser { + interface ext { /** - * Close implements the [io.ReadSeekCloser] interface. + * Ext returns the file name extension used by path. + * The extension is the suffix beginning at the final dot + * in the final element of path; it is empty if there is + * no dot. */ - close(): void - } - interface System { + (path: string): string } - interface newS3 { + interface evalSymlinks { /** - * NewS3 initializes an S3 filesystem instance. - * - * NB! Make sure to call `Close()` after you are done working with it. + * EvalSymlinks returns the path name after the evaluation of any symbolic + * links. + * If path is relative the result will be relative to the current directory, + * unless one of the components is an absolute symbolic link. + * EvalSymlinks calls Clean on the result. */ - (bucketName: string, region: string, endpoint: string, accessKey: string, secretKey: string, s3ForcePathStyle: boolean): (System | undefined) + (path: string): string } - interface newLocal { + interface abs { /** - * NewLocal initializes a new local filesystem instance. - * - * NB! Make sure to call `Close()` after you are done working with it. + * Abs returns an absolute representation of path. + * If the path is not absolute it will be joined with the current + * working directory to turn it into an absolute path. The absolute + * path name for a given file is not guaranteed to be unique. + * Abs calls Clean on the result. */ - (dirPath: string): (System | undefined) + (path: string): string } - interface System { + interface rel { /** - * SetContext assigns the specified context to the current filesystem. + * Rel returns a relative path that is lexically equivalent to targpath when + * joined to basepath with an intervening separator. That is, + * Join(basepath, Rel(basepath, targpath)) is equivalent to targpath itself. + * On success, the returned path will always be relative to basepath, + * even if basepath and targpath share no elements. + * An error is returned if targpath can't be made relative to basepath or if + * knowing the current working directory would be necessary to compute it. + * Rel calls Clean on the result. */ - setContext(ctx: context.Context): void + (basepath: string): string } - interface System { + /** + * WalkFunc is the type of the function called by Walk to visit each + * file or directory. + * + * The path argument contains the argument to Walk as a prefix. + * That is, if Walk is called with root argument "dir" and finds a file + * named "a" in that directory, the walk function will be called with + * argument "dir/a". + * + * The directory and file are joined with Join, which may clean the + * directory name: if Walk is called with the root argument "x/../dir" + * and finds a file named "a" in that directory, the walk function will + * be called with argument "dir/a", not "x/../dir/a". + * + * The info argument is the fs.FileInfo for the named path. + * + * The error result returned by the function controls how Walk continues. + * If the function returns the special value SkipDir, Walk skips the + * current directory (path if info.IsDir() is true, otherwise path's + * parent directory). Otherwise, if the function returns a non-nil error, + * Walk stops entirely and returns that error. + * + * The err argument reports an error related to path, signaling that Walk + * will not walk into that directory. The function can decide how to + * handle that error; as described earlier, returning the error will + * cause Walk to stop walking the entire tree. + * + * Walk calls the function with a non-nil err argument in two cases. + * + * First, if an os.Lstat on the root directory or any directory or file + * in the tree fails, Walk calls the function with path set to that + * directory or file's path, info set to nil, and err set to the error + * from os.Lstat. + * + * Second, if a directory's Readdirnames method fails, Walk calls the + * function with path set to the directory's path, info, set to an + * fs.FileInfo describing the directory, and err set to the error from + * Readdirnames. + */ + interface WalkFunc {(path: string, info: fs.FileInfo, err: Error): void } + interface walkDir { /** - * Close releases any resources used for the related filesystem. + * WalkDir walks the file tree rooted at root, calling fn for each file or + * directory in the tree, including root. + * + * All errors that arise visiting files and directories are filtered by fn: + * see the fs.WalkDirFunc documentation for details. + * + * The files are walked in lexical order, which makes the output deterministic + * but requires WalkDir to read an entire directory into memory before proceeding + * to walk that directory. + * + * WalkDir does not follow symbolic links. */ - close(): void + (root: string, fn: fs.WalkDirFunc): void } - interface System { - /** - * Exists checks if file with fileKey path exists or not. - */ - exists(fileKey: string): boolean + interface statDirEntry { } - interface System { - /** - * Attributes returns the attributes for the file with fileKey path. - */ - attributes(fileKey: string): (blob.Attributes | undefined) + interface statDirEntry { + name(): string } - interface System { + interface statDirEntry { + isDir(): boolean + } + interface statDirEntry { + type(): fs.FileMode + } + interface statDirEntry { + info(): fs.FileInfo + } + interface walk { /** - * GetFile returns a file content reader for the given fileKey. + * Walk walks the file tree rooted at root, calling fn for each file or + * directory in the tree, including root. * - * NB! Make sure to call `Close()` after you are done working with it. + * All errors that arise visiting files and directories are filtered by fn: + * see the WalkFunc documentation for details. + * + * The files are walked in lexical order, which makes the output deterministic + * but requires Walk to read an entire directory into memory before proceeding + * to walk that directory. + * + * Walk does not follow symbolic links. + * + * Walk is less efficient than WalkDir, introduced in Go 1.16, + * which avoids calling os.Lstat on every visited file or directory. */ - getFile(fileKey: string): (blob.Reader | undefined) + (root: string, fn: WalkFunc): void } - interface System { + interface base { /** - * List returns a flat list with info for all files under the specified prefix. + * Base returns the last element of path. + * Trailing path separators are removed before extracting the last element. + * If the path is empty, Base returns ".". + * If the path consists entirely of separators, Base returns a single separator. */ - list(prefix: string): Array<(blob.ListObject | undefined)> + (path: string): string } - interface System { + interface dir { /** - * Upload writes content into the fileKey location. + * Dir returns all but the last element of path, typically the path's directory. + * After dropping the final element, Dir calls Clean on the path and trailing + * slashes are removed. + * If the path is empty, Dir returns ".". + * If the path consists entirely of separators, Dir returns a single separator. + * The returned path does not end in a separator unless it is the root directory. */ - upload(content: string, fileKey: string): void + (path: string): string } - interface System { + interface volumeName { /** - * UploadFile uploads the provided multipart file to the fileKey location. + * VolumeName returns leading volume name. + * Given "C:\foo\bar" it returns "C:" on Windows. + * Given "\\host\share\foo" it returns "\\host\share". + * On other platforms it returns "". */ - uploadFile(file: File, fileKey: string): void + (path: string): string } - interface System { + interface isAbs { /** - * UploadMultipart uploads the provided multipart file to the fileKey location. + * IsAbs reports whether the path is absolute. */ - uploadMultipart(fh: multipart.FileHeader, fileKey: string): void + (path: string): boolean } - interface System { + interface hasPrefix { /** - * Delete deletes stored file at fileKey location. + * HasPrefix exists for historical compatibility and should not be used. + * + * Deprecated: HasPrefix does not respect path boundaries and + * does not ignore case when required. */ - delete(fileKey: string): void + (p: string): boolean } - interface System { +} + +namespace security { + // @ts-ignore + import crand = rand + interface s256Challenge { /** - * DeletePrefix deletes everything starting with the specified prefix. + * S256Challenge creates base64 encoded sha256 challenge string derived from code. + * The padding of the result base64 string is stripped per [RFC 7636]. + * + * [RFC 7636]: https://datatracker.ietf.org/doc/html/rfc7636#section-4.2 */ - deletePrefix(prefix: string): Array + (code: string): string } - interface System { + interface encrypt { /** - * Serve serves the file at fileKey location to an HTTP response. - * - * If the `download` query parameter is used the file will be always served for - * download no matter of its type (aka. with "Content-Disposition: attachment"). + * Encrypt encrypts data with key (must be valid 32 char aes key). */ - serve(res: http.ResponseWriter, req: http.Request, fileKey: string, name: string): void + (data: string, key: string): string } - interface System { + interface decrypt { /** - * CreateThumb creates a new thumb image for the file at originalKey location. - * The new thumb file is stored at thumbKey location. - * - * thumbSize is in the format: - * - 0xH (eg. 0x100) - resize to H height preserving the aspect ratio - * - Wx0 (eg. 300x0) - resize to W width preserving the aspect ratio - * - WxH (eg. 300x100) - resize and crop to WxH viewbox (from center) - * - WxHt (eg. 300x100t) - resize and crop to WxH viewbox (from top) - * - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom) - * - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping) + * Decrypt decrypts encrypted text with key (must be valid 32 chars aes key). */ - createThumb(originalKey: string, thumbKey: string): void + (cipherText: string, key: string): string } -} - -/** - * Package tokens implements various user and admin tokens generation methods. - */ -namespace tokens { - interface newAdminAuthToken { + interface parseUnverifiedJWT { /** - * NewAdminAuthToken generates and returns a new admin authentication token. + * ParseUnverifiedJWT parses JWT token and returns its claims + * but DOES NOT verify the signature. + * + * It verifies only the exp, iat and nbf claims. */ - (app: core.App, admin: models.Admin): string + (token: string): jwt.MapClaims } - interface newAdminResetPasswordToken { + interface parseJWT { /** - * NewAdminResetPasswordToken generates and returns a new admin password reset request token. + * ParseJWT verifies and parses JWT token and returns its claims. */ - (app: core.App, admin: models.Admin): string + (token: string, verificationKey: string): jwt.MapClaims } - interface newAdminFileToken { + interface newJWT { /** - * NewAdminFileToken generates and returns a new admin private file access token. + * NewJWT generates and returns new HS256 signed JWT token. */ - (app: core.App, admin: models.Admin): string + (payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string } - interface newRecordAuthToken { + interface newToken { /** - * NewRecordAuthToken generates and returns a new auth record authentication token. + * Deprecated: + * Consider replacing with NewJWT(). + * + * NewToken is a legacy alias for NewJWT that generates a HS256 signed JWT token. */ - (app: core.App, record: models.Record): string + (payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string } - interface newRecordVerifyToken { + // @ts-ignore + import cryptoRand = rand + // @ts-ignore + import mathRand = rand + interface randomString { /** - * NewRecordVerifyToken generates and returns a new record verification token. + * RandomString generates a cryptographically random string with the specified length. + * + * The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding. */ - (app: core.App, record: models.Record): string + (length: number): string } - interface newRecordResetPasswordToken { + interface randomStringWithAlphabet { /** - * NewRecordResetPasswordToken generates and returns a new auth record password reset request token. + * RandomStringWithAlphabet generates a cryptographically random string + * with the specified length and characters set. + * + * It panics if for some reason rand.Int returns a non-nil error. */ - (app: core.App, record: models.Record): string + (length: number, alphabet: string): string } - interface newRecordChangeEmailToken { + interface pseudorandomString { /** - * NewRecordChangeEmailToken generates and returns a new auth record change email request token. + * PseudorandomString generates a pseudorandom string with the specified length. + * + * The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding. + * + * For a cryptographically random string (but a little bit slower) use RandomString instead. */ - (app: core.App, record: models.Record, newEmail: string): string + (length: number): string } - interface newRecordFileToken { + interface pseudorandomStringWithAlphabet { /** - * NewRecordFileToken generates and returns a new record private file access token. + * PseudorandomStringWithAlphabet generates a pseudorandom string + * with the specified length and characters set. + * + * For a cryptographically random (but a little bit slower) use RandomStringWithAlphabet instead. */ - (app: core.App, record: models.Record): string + (length: number, alphabet: string): string } } /** - * Package models implements various services used for request data - * validation and applying changes to existing DB models through the app Dao. + * Package exec runs external commands. It wraps os.StartProcess to make it + * easier to remap stdin and stdout, connect I/O with pipes, and do other + * adjustments. + * + * Unlike the "system" library call from C and other languages, the + * os/exec package intentionally does not invoke the system shell and + * does not expand any glob patterns or handle other expansions, + * pipelines, or redirections typically done by shells. The package + * behaves more like C's "exec" family of functions. To expand glob + * patterns, either call the shell directly, taking care to escape any + * dangerous input, or use the path/filepath package's Glob function. + * To expand environment variables, use package os's ExpandEnv. + * + * Note that the examples in this package assume a Unix system. + * They may not run on Windows, and they do not run in the Go Playground + * used by golang.org and godoc.org. */ -namespace forms { - // @ts-ignore - import validation = ozzo_validation - /** - * AdminLogin is an admin email/pass login form. - */ - interface AdminLogin { - identity: string - password: string - } - interface newAdminLogin { +namespace exec { + interface command { /** - * NewAdminLogin creates a new [AdminLogin] form initialized with - * the provided [core.App] instance. + * Command returns the Cmd struct to execute the named program with + * the given arguments. * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * It sets only the Path and Args in the returned structure. + * + * If name contains no path separators, Command uses LookPath to + * resolve name to a complete path if possible. Otherwise it uses name + * directly as Path. + * + * The returned Cmd's Args field is constructed from the command name + * followed by the elements of arg, so arg should not include the + * command name itself. For example, Command("echo", "hello"). + * Args[0] is always name, not the possibly resolved Path. + * + * On Windows, processes receive the whole command line as a single string + * and do their own parsing. Command combines and quotes Args into a command + * line string with an algorithm compatible with applications using + * CommandLineToArgvW (which is the most common way). Notable exceptions are + * msiexec.exe and cmd.exe (and thus, all batch files), which have a different + * unquoting algorithm. In these or other similar cases, you can do the + * quoting yourself and provide the full command line in SysProcAttr.CmdLine, + * leaving Args empty. */ - (app: core.App): (AdminLogin | undefined) + (name: string, ...arg: string[]): (Cmd | undefined) } - interface AdminLogin { +} + +namespace filesystem { + /** + * FileReader defines an interface for a file resource reader. + */ + interface FileReader { + open(): io.ReadSeekCloser + } + /** + * File defines a single file [io.ReadSeekCloser] resource. + * + * The file could be from a local path, multipipart/formdata header, etc. + */ + interface File { + name: string + originalName: string + size: number + reader: FileReader + } + interface newFileFromPath { /** - * SetDao replaces the default form Dao instance with the provided one. + * NewFileFromPath creates a new File instance from the provided local file path. */ - setDao(dao: daos.Dao): void + (path: string): (File | undefined) } - interface AdminLogin { + interface newFileFromBytes { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * NewFileFromBytes creates a new File instance from the provided byte slice. */ - validate(): void + (b: string, name: string): (File | undefined) } - interface AdminLogin { + interface newFileFromMultipart { /** - * Submit validates and submits the admin form. - * On success returns the authorized admin model. - * - * You can optionally provide a list of InterceptorFunc to - * further modify the form behavior before persisting it. + * NewFileFromMultipart creates a new File instace from the provided multipart header. */ - submit(...interceptors: InterceptorFunc[]): (models.Admin | undefined) + (mh: multipart.FileHeader): (File | undefined) } /** - * AdminPasswordResetConfirm is an admin password reset confirmation form. + * MultipartReader defines a FileReader from [multipart.FileHeader]. */ - interface AdminPasswordResetConfirm { - token: string - password: string - passwordConfirm: string + interface MultipartReader { + header?: multipart.FileHeader } - interface newAdminPasswordResetConfirm { + interface MultipartReader { /** - * NewAdminPasswordResetConfirm creates a new [AdminPasswordResetConfirm] - * form initialized with from the provided [core.App] instance. - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * Open implements the [filesystem.FileReader] interface. */ - (app: core.App): (AdminPasswordResetConfirm | undefined) - } - interface AdminPasswordResetConfirm { - /** - * SetDao replaces the form Dao instance with the provided one. - * - * This is useful if you want to use a specific transaction Dao instance - * instead of the default app.Dao(). - */ - setDao(dao: daos.Dao): void + open(): io.ReadSeekCloser } - interface AdminPasswordResetConfirm { - /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. - */ - validate(): void + /** + * PathReader defines a FileReader from a local file path. + */ + interface PathReader { + path: string } - interface AdminPasswordResetConfirm { + interface PathReader { /** - * Submit validates and submits the admin password reset confirmation form. - * On success returns the updated admin model associated to `form.Token`. - * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * Open implements the [filesystem.FileReader] interface. */ - submit(...interceptors: InterceptorFunc[]): (models.Admin | undefined) + open(): io.ReadSeekCloser } /** - * AdminPasswordResetRequest is an admin password reset request form. + * BytesReader defines a FileReader from bytes content. */ - interface AdminPasswordResetRequest { - email: string + interface BytesReader { + bytes: string } - interface newAdminPasswordResetRequest { + interface BytesReader { /** - * NewAdminPasswordResetRequest creates a new [AdminPasswordResetRequest] - * form initialized with from the provided [core.App] instance. - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * Open implements the [filesystem.FileReader] interface. */ - (app: core.App): (AdminPasswordResetRequest | undefined) + open(): io.ReadSeekCloser } - interface AdminPasswordResetRequest { + type _subNaZfw = bytes.Reader + interface bytesReadSeekCloser extends _subNaZfw { + } + interface bytesReadSeekCloser { /** - * SetDao replaces the default form Dao instance with the provided one. + * Close implements the [io.ReadSeekCloser] interface. */ - setDao(dao: daos.Dao): void + close(): void } - interface AdminPasswordResetRequest { + interface System { + } + interface newS3 { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * NewS3 initializes an S3 filesystem instance. * - * This method doesn't verify that admin with `form.Email` exists (this is done on Submit). + * NB! Make sure to call `Close()` after you are done working with it. */ - validate(): void + (bucketName: string, region: string, endpoint: string, accessKey: string, secretKey: string, s3ForcePathStyle: boolean): (System | undefined) } - interface AdminPasswordResetRequest { + interface newLocal { /** - * Submit validates and submits the form. - * On success sends a password reset email to the `form.Email` admin. + * NewLocal initializes a new local filesystem instance. * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * NB! Make sure to call `Close()` after you are done working with it. */ - submit(...interceptors: InterceptorFunc[]): void + (dirPath: string): (System | undefined) } - /** - * AdminUpsert is a [models.Admin] upsert (create/update) form. - */ - interface AdminUpsert { - id: string - avatar: number - email: string - password: string - passwordConfirm: string + interface System { + /** + * SetContext assigns the specified context to the current filesystem. + */ + setContext(ctx: context.Context): void } - interface newAdminUpsert { + interface System { /** - * NewAdminUpsert creates a new [AdminUpsert] form with initializer - * config created from the provided [core.App] and [models.Admin] instances - * (for create you could pass a pointer to an empty Admin - `&models.Admin{}`). - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * Close releases any resources used for the related filesystem. */ - (app: core.App, admin: models.Admin): (AdminUpsert | undefined) + close(): void } - interface AdminUpsert { + interface System { /** - * SetDao replaces the default form Dao instance with the provided one. + * Exists checks if file with fileKey path exists or not. */ - setDao(dao: daos.Dao): void + exists(fileKey: string): boolean } - interface AdminUpsert { + interface System { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * Attributes returns the attributes for the file with fileKey path. */ - validate(): void + attributes(fileKey: string): (blob.Attributes | undefined) } - interface AdminUpsert { + interface System { /** - * Submit validates the form and upserts the form admin model. + * GetFile returns a file content reader for the given fileKey. * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * NB! Make sure to call `Close()` after you are done working with it. */ - submit(...interceptors: InterceptorFunc[]): void + getFile(fileKey: string): (blob.Reader | undefined) } - /** - * AppleClientSecretCreate is a [models.Admin] upsert (create/update) form. - * - * Reference: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens - */ - interface AppleClientSecretCreate { + interface System { /** - * ClientId is the identifier of your app (aka. Service ID). + * List returns a flat list with info for all files under the specified prefix. */ - clientId: string + list(prefix: string): Array<(blob.ListObject | undefined)> + } + interface System { /** - * TeamId is a 10-character string associated with your developer account - * (usually could be found next to your name in the Apple Developer site). + * Upload writes content into the fileKey location. */ - teamId: string + upload(content: string, fileKey: string): void + } + interface System { /** - * KeyId is a 10-character key identifier generated for the "Sign in with Apple" - * private key associated with your developer account. + * UploadFile uploads the provided multipart file to the fileKey location. */ - keyId: string + uploadFile(file: File, fileKey: string): void + } + interface System { /** - * PrivateKey is the private key associated to your app. - * Usually wrapped within -----BEGIN PRIVATE KEY----- X -----END PRIVATE KEY-----. + * UploadMultipart uploads the provided multipart file to the fileKey location. */ - privateKey: string + uploadMultipart(fh: multipart.FileHeader, fileKey: string): void + } + interface System { /** - * Duration specifies how long the generated JWT token should be considered valid. - * The specified value must be in seconds and max 15777000 (~6months). + * Delete deletes stored file at fileKey location. */ - duration: number + delete(fileKey: string): void } - interface newAppleClientSecretCreate { + interface System { /** - * NewAppleClientSecretCreate creates a new [AppleClientSecretCreate] form with initializer - * config created from the provided [core.App] instances. + * DeletePrefix deletes everything starting with the specified prefix. */ - (app: core.App): (AppleClientSecretCreate | undefined) + deletePrefix(prefix: string): Array } - interface AppleClientSecretCreate { + interface System { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * Serve serves the file at fileKey location to an HTTP response. + * + * If the `download` query parameter is used the file will be always served for + * download no matter of its type (aka. with "Content-Disposition: attachment"). */ - validate(): void + serve(res: http.ResponseWriter, req: http.Request, fileKey: string, name: string): void } - interface AppleClientSecretCreate { + interface System { /** - * Submit validates the form and returns a new Apple Client Secret JWT. + * CreateThumb creates a new thumb image for the file at originalKey location. + * The new thumb file is stored at thumbKey location. + * + * thumbSize is in the format: + * - 0xH (eg. 0x100) - resize to H height preserving the aspect ratio + * - Wx0 (eg. 300x0) - resize to W width preserving the aspect ratio + * - WxH (eg. 300x100) - resize and crop to WxH viewbox (from center) + * - WxHt (eg. 300x100t) - resize and crop to WxH viewbox (from top) + * - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom) + * - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping) */ - submit(): string + createThumb(originalKey: string, thumbKey: string): void } +} + +/** + * Package validation provides configurable and extensible rules for validating data of various types. + */ +namespace ozzo_validation { /** - * BackupCreate is a request form for creating a new app backup. + * Error interface represents an validation error */ - interface BackupCreate { - name: string + interface Error { + error(): string + code(): string + message(): string + setMessage(_arg0: string): Error + params(): _TygojaDict + setParams(_arg0: _TygojaDict): Error } - interface newBackupCreate { +} + +/** + * Package tokens implements various user and admin tokens generation methods. + */ +namespace tokens { + interface newAdminAuthToken { /** - * NewBackupCreate creates new BackupCreate request form. + * NewAdminAuthToken generates and returns a new admin authentication token. */ - (app: core.App): (BackupCreate | undefined) + (app: core.App, admin: models.Admin): string } - interface BackupCreate { + interface newAdminResetPasswordToken { /** - * SetContext replaces the default form context with the provided one. + * NewAdminResetPasswordToken generates and returns a new admin password reset request token. */ - setContext(ctx: context.Context): void + (app: core.App, admin: models.Admin): string } - interface BackupCreate { + interface newAdminFileToken { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * NewAdminFileToken generates and returns a new admin private file access token. */ - validate(): void + (app: core.App, admin: models.Admin): string } - interface BackupCreate { + interface newRecordAuthToken { /** - * Submit validates the form and creates the app backup. - * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before creating the backup. + * NewRecordAuthToken generates and returns a new auth record authentication token. */ - submit(...interceptors: InterceptorFunc[]): void + (app: core.App, record: models.Record): string } - /** - * InterceptorNextFunc is a interceptor handler function. - * Usually used in combination with InterceptorFunc. - */ - interface InterceptorNextFunc {(t: T): void } - /** - * InterceptorFunc defines a single interceptor function that - * will execute the provided next func handler. - */ - interface InterceptorFunc {(next: InterceptorNextFunc): InterceptorNextFunc } - /** - * CollectionUpsert is a [models.Collection] upsert (create/update) form. - */ - interface CollectionUpsert { - id: string - type: string - name: string - system: boolean - schema: schema.Schema - indexes: types.JsonArray - listRule?: string - viewRule?: string - createRule?: string - updateRule?: string - deleteRule?: string - options: types.JsonMap - } - interface newCollectionUpsert { + interface newRecordVerifyToken { /** - * NewCollectionUpsert creates a new [CollectionUpsert] form with initializer - * config created from the provided [core.App] and [models.Collection] instances - * (for create you could pass a pointer to an empty Collection - `&models.Collection{}`). - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * NewRecordVerifyToken generates and returns a new record verification token. */ - (app: core.App, collection: models.Collection): (CollectionUpsert | undefined) + (app: core.App, record: models.Record): string } - interface CollectionUpsert { + interface newRecordResetPasswordToken { /** - * SetDao replaces the default form Dao instance with the provided one. + * NewRecordResetPasswordToken generates and returns a new auth record password reset request token. */ - setDao(dao: daos.Dao): void + (app: core.App, record: models.Record): string } - interface CollectionUpsert { + interface newRecordChangeEmailToken { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * NewRecordChangeEmailToken generates and returns a new auth record change email request token. */ - validate(): void + (app: core.App, record: models.Record, newEmail: string): string } - interface CollectionUpsert { + interface newRecordFileToken { /** - * Submit validates the form and upserts the form's Collection model. - * - * On success the related record table schema will be auto updated. - * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * NewRecordFileToken generates and returns a new record private file access token. */ - submit(...interceptors: InterceptorFunc[]): void + (app: core.App, record: models.Record): string } +} + +/** + * Package models implements various services used for request data + * validation and applying changes to existing DB models through the app Dao. + */ +namespace forms { + // @ts-ignore + import validation = ozzo_validation /** - * CollectionsImport is a form model to bulk import - * (create, replace and delete) collections from a user provided list. + * AdminLogin is an admin email/pass login form. */ - interface CollectionsImport { - collections: Array<(models.Collection | undefined)> - deleteMissing: boolean + interface AdminLogin { + identity: string + password: string } - interface newCollectionsImport { + interface newAdminLogin { /** - * NewCollectionsImport creates a new [CollectionsImport] form with - * initialized with from the provided [core.App] instance. + * NewAdminLogin creates a new [AdminLogin] form initialized with + * the provided [core.App] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App): (CollectionsImport | undefined) + (app: core.App): (AdminLogin | undefined) } - interface CollectionsImport { + interface AdminLogin { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface CollectionsImport { + interface AdminLogin { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface CollectionsImport { + interface AdminLogin { /** - * Submit applies the import, aka.: - * - imports the form collections (create or replace) - * - sync the collection changes with their related records table - * - ensures the integrity of the imported structure (aka. run validations for each collection) - * - if [form.DeleteMissing] is set, deletes all local collections that are not found in the imports list - * - * All operations are wrapped in a single transaction that are - * rollbacked on the first encountered error. + * Submit validates and submits the admin form. + * On success returns the authorized admin model. * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * You can optionally provide a list of InterceptorFunc to + * further modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc>[]): void + submit(...interceptors: InterceptorFunc[]): (models.Admin | undefined) } /** - * RealtimeSubscribe is a realtime subscriptions request form. + * AdminPasswordResetConfirm is an admin password reset confirmation form. */ - interface RealtimeSubscribe { - clientId: string - subscriptions: Array + interface AdminPasswordResetConfirm { + token: string + password: string + passwordConfirm: string } - interface newRealtimeSubscribe { + interface newAdminPasswordResetConfirm { /** - * NewRealtimeSubscribe creates new RealtimeSubscribe request form. + * NewAdminPasswordResetConfirm creates a new [AdminPasswordResetConfirm] + * form initialized with from the provided [core.App] instance. + * + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - (): (RealtimeSubscribe | undefined) + (app: core.App): (AdminPasswordResetConfirm | undefined) } - interface RealtimeSubscribe { + interface AdminPasswordResetConfirm { + /** + * SetDao replaces the form Dao instance with the provided one. + * + * This is useful if you want to use a specific transaction Dao instance + * instead of the default app.Dao(). + */ + setDao(dao: daos.Dao): void + } + interface AdminPasswordResetConfirm { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } + interface AdminPasswordResetConfirm { + /** + * Submit validates and submits the admin password reset confirmation form. + * On success returns the updated admin model associated to `form.Token`. + * + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. + */ + submit(...interceptors: InterceptorFunc[]): (models.Admin | undefined) + } /** - * RecordEmailChangeConfirm is an auth record email change confirmation form. + * AdminPasswordResetRequest is an admin password reset request form. */ - interface RecordEmailChangeConfirm { - token: string - password: string + interface AdminPasswordResetRequest { + email: string } - interface newRecordEmailChangeConfirm { + interface newAdminPasswordResetRequest { /** - * NewRecordEmailChangeConfirm creates a new [RecordEmailChangeConfirm] form - * initialized with from the provided [core.App] and [models.Collection] instances. + * NewAdminPasswordResetRequest creates a new [AdminPasswordResetRequest] + * form initialized with from the provided [core.App] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, collection: models.Collection): (RecordEmailChangeConfirm | undefined) + (app: core.App): (AdminPasswordResetRequest | undefined) } - interface RecordEmailChangeConfirm { + interface AdminPasswordResetRequest { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordEmailChangeConfirm { + interface AdminPasswordResetRequest { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. + * + * This method doesn't verify that admin with `form.Email` exists (this is done on Submit). */ validate(): void } - interface RecordEmailChangeConfirm { + interface AdminPasswordResetRequest { /** - * Submit validates and submits the auth record email change confirmation form. - * On success returns the updated auth record associated to `form.Token`. + * Submit validates and submits the form. + * On success sends a password reset email to the `form.Email` admin. * - * You can optionally provide a list of InterceptorFunc to - * further modify the form behavior before persisting it. + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) + submit(...interceptors: InterceptorFunc[]): void } /** - * RecordEmailChangeRequest is an auth record email change request form. + * AdminUpsert is a [models.Admin] upsert (create/update) form. */ - interface RecordEmailChangeRequest { - newEmail: string + interface AdminUpsert { + id: string + avatar: number + email: string + password: string + passwordConfirm: string } - interface newRecordEmailChangeRequest { + interface newAdminUpsert { /** - * NewRecordEmailChangeRequest creates a new [RecordEmailChangeRequest] form - * initialized with from the provided [core.App] and [models.Record] instances. + * NewAdminUpsert creates a new [AdminUpsert] form with initializer + * config created from the provided [core.App] and [models.Admin] instances + * (for create you could pass a pointer to an empty Admin - `&models.Admin{}`). * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, record: models.Record): (RecordEmailChangeRequest | undefined) + (app: core.App, admin: models.Admin): (AdminUpsert | undefined) } - interface RecordEmailChangeRequest { + interface AdminUpsert { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordEmailChangeRequest { + interface AdminUpsert { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface RecordEmailChangeRequest { + interface AdminUpsert { /** - * Submit validates and sends the change email request. + * Submit validates the form and upserts the form admin model. * - * You can optionally provide a list of InterceptorFunc to - * further modify the form behavior before persisting it. + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): void - } - /** - * RecordOAuth2LoginData defines the OA - */ - interface RecordOAuth2LoginData { - externalAuth?: models.ExternalAuth - record?: models.Record - oAuth2User?: auth.AuthUser - providerClient: auth.Provider + submit(...interceptors: InterceptorFunc[]): void } /** - * BeforeOAuth2RecordCreateFunc defines a callback function that will - * be called before OAuth2 new Record creation. - */ - interface BeforeOAuth2RecordCreateFunc {(createForm: RecordUpsert, authRecord: models.Record, authUser: auth.AuthUser): void } - /** - * RecordOAuth2Login is an auth record OAuth2 login form. + * AppleClientSecretCreate is a [models.Admin] upsert (create/update) form. + * + * Reference: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens */ - interface RecordOAuth2Login { + interface AppleClientSecretCreate { /** - * The name of the OAuth2 client provider (eg. "google") + * ClientId is the identifier of your app (aka. Service ID). */ - provider: string + clientId: string /** - * The authorization code returned from the initial request. + * TeamId is a 10-character string associated with your developer account + * (usually could be found next to your name in the Apple Developer site). */ - code: string + teamId: string /** - * The code verifier sent with the initial request as part of the code_challenge. + * KeyId is a 10-character key identifier generated for the "Sign in with Apple" + * private key associated with your developer account. */ - codeVerifier: string + keyId: string /** - * The redirect url sent with the initial request. + * PrivateKey is the private key associated to your app. + * Usually wrapped within -----BEGIN PRIVATE KEY----- X -----END PRIVATE KEY-----. */ - redirectUrl: string + privateKey: string /** - * Additional data that will be used for creating a new auth record - * if an existing OAuth2 account doesn't exist. + * Duration specifies how long the generated JWT token should be considered valid. + * The specified value must be in seconds and max 15777000 (~6months). */ - createData: _TygojaDict + duration: number } - interface newRecordOAuth2Login { + interface newAppleClientSecretCreate { /** - * NewRecordOAuth2Login creates a new [RecordOAuth2Login] form with - * initialized with from the provided [core.App] instance. - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * NewAppleClientSecretCreate creates a new [AppleClientSecretCreate] form with initializer + * config created from the provided [core.App] instances. */ - (app: core.App, collection: models.Collection, optAuthRecord: models.Record): (RecordOAuth2Login | undefined) + (app: core.App): (AppleClientSecretCreate | undefined) } - interface RecordOAuth2Login { - /** - * SetDao replaces the default form Dao instance with the provided one. - */ - setDao(dao: daos.Dao): void - } - interface RecordOAuth2Login { - /** - * SetBeforeNewRecordCreateFunc sets a before OAuth2 record create callback handler. - */ - setBeforeNewRecordCreateFunc(f: BeforeOAuth2RecordCreateFunc): void - } - interface RecordOAuth2Login { + interface AppleClientSecretCreate { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface RecordOAuth2Login { + interface AppleClientSecretCreate { /** - * Submit validates and submits the form. - * - * If an auth record doesn't exist, it will make an attempt to create it - * based on the fetched OAuth2 profile data via a local [RecordUpsert] form. - * You can intercept/modify the Record create form with [form.SetBeforeNewRecordCreateFunc()]. - * - * You can also optionally provide a list of InterceptorFunc to - * further modify the form behavior before persisting it. - * - * On success returns the authorized record model and the fetched provider's data. + * Submit validates the form and returns a new Apple Client Secret JWT. */ - submit(...interceptors: InterceptorFunc[]): [(models.Record | undefined), (auth.AuthUser | undefined)] + submit(): string } /** - * RecordPasswordLogin is record username/email + password login form. + * BackupCreate is a request form for creating a new app backup. */ - interface RecordPasswordLogin { - identity: string - password: string + interface BackupCreate { + name: string } - interface newRecordPasswordLogin { + interface newBackupCreate { /** - * NewRecordPasswordLogin creates a new [RecordPasswordLogin] form initialized - * with from the provided [core.App] and [models.Collection] instance. - * - * If you want to submit the form as part of a transaction, - * you can change the default Dao via [SetDao()]. + * NewBackupCreate creates new BackupCreate request form. */ - (app: core.App, collection: models.Collection): (RecordPasswordLogin | undefined) + (app: core.App): (BackupCreate | undefined) } - interface RecordPasswordLogin { + interface BackupCreate { /** - * SetDao replaces the default form Dao instance with the provided one. + * SetContext replaces the default form context with the provided one. */ - setDao(dao: daos.Dao): void + setContext(ctx: context.Context): void } - interface RecordPasswordLogin { + interface BackupCreate { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface RecordPasswordLogin { + interface BackupCreate { /** - * Submit validates and submits the form. - * On success returns the authorized record model. + * Submit validates the form and creates the app backup. * - * You can optionally provide a list of InterceptorFunc to - * further modify the form behavior before persisting it. + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before creating the backup. */ - submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) + submit(...interceptors: InterceptorFunc[]): void } /** - * RecordPasswordResetConfirm is an auth record password reset confirmation form. + * InterceptorNextFunc is a interceptor handler function. + * Usually used in combination with InterceptorFunc. */ - interface RecordPasswordResetConfirm { - token: string - password: string - passwordConfirm: string + interface InterceptorNextFunc {(t: T): void } + /** + * InterceptorFunc defines a single interceptor function that + * will execute the provided next func handler. + */ + interface InterceptorFunc {(next: InterceptorNextFunc): InterceptorNextFunc } + /** + * CollectionUpsert is a [models.Collection] upsert (create/update) form. + */ + interface CollectionUpsert { + id: string + type: string + name: string + system: boolean + schema: schema.Schema + indexes: types.JsonArray + listRule?: string + viewRule?: string + createRule?: string + updateRule?: string + deleteRule?: string + options: types.JsonMap } - interface newRecordPasswordResetConfirm { + interface newCollectionUpsert { /** - * NewRecordPasswordResetConfirm creates a new [RecordPasswordResetConfirm] - * form initialized with from the provided [core.App] instance. + * NewCollectionUpsert creates a new [CollectionUpsert] form with initializer + * config created from the provided [core.App] and [models.Collection] instances + * (for create you could pass a pointer to an empty Collection - `&models.Collection{}`). * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, collection: models.Collection): (RecordPasswordResetConfirm | undefined) + (app: core.App, collection: models.Collection): (CollectionUpsert | undefined) } - interface RecordPasswordResetConfirm { + interface CollectionUpsert { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordPasswordResetConfirm { + interface CollectionUpsert { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface RecordPasswordResetConfirm { + interface CollectionUpsert { /** - * Submit validates and submits the form. - * On success returns the updated auth record associated to `form.Token`. + * Submit validates the form and upserts the form's Collection model. + * + * On success the related record table schema will be auto updated. * * You can optionally provide a list of InterceptorFunc to further * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) + submit(...interceptors: InterceptorFunc[]): void } /** - * RecordPasswordResetRequest is an auth record reset password request form. + * CollectionsImport is a form model to bulk import + * (create, replace and delete) collections from a user provided list. */ - interface RecordPasswordResetRequest { - email: string + interface CollectionsImport { + collections: Array<(models.Collection | undefined)> + deleteMissing: boolean } - interface newRecordPasswordResetRequest { + interface newCollectionsImport { /** - * NewRecordPasswordResetRequest creates a new [RecordPasswordResetRequest] - * form initialized with from the provided [core.App] instance. + * NewCollectionsImport creates a new [CollectionsImport] form with + * initialized with from the provided [core.App] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, collection: models.Collection): (RecordPasswordResetRequest | undefined) + (app: core.App): (CollectionsImport | undefined) } - interface RecordPasswordResetRequest { + interface CollectionsImport { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordPasswordResetRequest { + interface CollectionsImport { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. - * - * This method doesn't checks whether auth record with `form.Email` exists (this is done on Submit). */ validate(): void } - interface RecordPasswordResetRequest { + interface CollectionsImport { /** - * Submit validates and submits the form. - * On success, sends a password reset email to the `form.Email` auth record. + * Submit applies the import, aka.: + * - imports the form collections (create or replace) + * - sync the collection changes with their related records table + * - ensures the integrity of the imported structure (aka. run validations for each collection) + * - if [form.DeleteMissing] is set, deletes all local collections that are not found in the imports list + * + * All operations are wrapped in a single transaction that are + * rollbacked on the first encountered error. * * You can optionally provide a list of InterceptorFunc to further * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): void + submit(...interceptors: InterceptorFunc>[]): void } /** - * RecordUpsert is a [models.Record] upsert (create/update) form. + * RealtimeSubscribe is a realtime subscriptions request form. */ - interface RecordUpsert { + interface RealtimeSubscribe { + clientId: string + subscriptions: Array + } + interface newRealtimeSubscribe { /** - * base model fields + * NewRealtimeSubscribe creates new RealtimeSubscribe request form. */ - id: string + (): (RealtimeSubscribe | undefined) + } + interface RealtimeSubscribe { /** - * auth collection fields - * --- + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - username: string - email: string - emailVisibility: boolean - verified: boolean + validate(): void + } + /** + * RecordEmailChangeConfirm is an auth record email change confirmation form. + */ + interface RecordEmailChangeConfirm { + token: string password: string - passwordConfirm: string - oldPassword: string } - interface newRecordUpsert { + interface newRecordEmailChangeConfirm { /** - * NewRecordUpsert creates a new [RecordUpsert] form with initializer - * config created from the provided [core.App] and [models.Record] instances - * (for create you could pass a pointer to an empty Record - models.NewRecord(collection)). + * NewRecordEmailChangeConfirm creates a new [RecordEmailChangeConfirm] form + * initialized with from the provided [core.App] and [models.Collection] instances. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, record: models.Record): (RecordUpsert | undefined) + (app: core.App, collection: models.Collection): (RecordEmailChangeConfirm | undefined) } - interface RecordUpsert { + interface RecordEmailChangeConfirm { /** - * Data returns the loaded form's data. + * SetDao replaces the default form Dao instance with the provided one. */ - data(): _TygojaDict + setDao(dao: daos.Dao): void } - interface RecordUpsert { + interface RecordEmailChangeConfirm { /** - * SetFullManageAccess sets the manageAccess bool flag of the current - * form to enable/disable directly changing some system record fields - * (often used with auth collection records). + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - setFullManageAccess(fullManageAccess: boolean): void + validate(): void } - interface RecordUpsert { + interface RecordEmailChangeConfirm { /** - * SetDao replaces the default form Dao instance with the provided one. + * Submit validates and submits the auth record email change confirmation form. + * On success returns the updated auth record associated to `form.Token`. + * + * You can optionally provide a list of InterceptorFunc to + * further modify the form behavior before persisting it. */ - setDao(dao: daos.Dao): void + submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) } - interface RecordUpsert { + /** + * RecordEmailChangeRequest is an auth record email change request form. + */ + interface RecordEmailChangeRequest { + newEmail: string + } + interface newRecordEmailChangeRequest { /** - * LoadRequest extracts the json or multipart/form-data request data - * and lods it into the form. + * NewRecordEmailChangeRequest creates a new [RecordEmailChangeRequest] form + * initialized with from the provided [core.App] and [models.Record] instances. * - * File upload is supported only via multipart/form-data. + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - loadRequest(r: http.Request, keyPrefix: string): void + (app: core.App, record: models.Record): (RecordEmailChangeRequest | undefined) } - interface RecordUpsert { + interface RecordEmailChangeRequest { /** - * FilesToUpload returns the parsed request files ready for upload. + * SetDao replaces the default form Dao instance with the provided one. */ - filesToUpload(): _TygojaDict + setDao(dao: daos.Dao): void } - interface RecordUpsert { + interface RecordEmailChangeRequest { /** - * FilesToUpload returns the parsed request filenames ready to be deleted. + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - filesToDelete(): Array + validate(): void } - interface RecordUpsert { + interface RecordEmailChangeRequest { /** - * AddFiles adds the provided file(s) to the specified file field. - * - * If the file field is a SINGLE-value file field (aka. "Max Select = 1"), - * then the newly added file will REPLACE the existing one. - * In this case if you pass more than 1 files only the first one will be assigned. - * - * If the file field is a MULTI-value file field (aka. "Max Select > 1"), - * then the newly added file(s) will be APPENDED to the existing one(s). - * - * Example + * Submit validates and sends the change email request. * - * ``` - * f1, _ := filesystem.NewFileFromPath("/path/to/file1.txt") - * f2, _ := filesystem.NewFileFromPath("/path/to/file2.txt") - * form.AddFiles("documents", f1, f2) - * ``` + * You can optionally provide a list of InterceptorFunc to + * further modify the form behavior before persisting it. */ - addFiles(key: string, ...files: (filesystem.File | undefined)[]): void + submit(...interceptors: InterceptorFunc[]): void } - interface RecordUpsert { + /** + * RecordOAuth2LoginData defines the OA + */ + interface RecordOAuth2LoginData { + externalAuth?: models.ExternalAuth + record?: models.Record + oAuth2User?: auth.AuthUser + providerClient: auth.Provider + } + /** + * BeforeOAuth2RecordCreateFunc defines a callback function that will + * be called before OAuth2 new Record creation. + */ + interface BeforeOAuth2RecordCreateFunc {(createForm: RecordUpsert, authRecord: models.Record, authUser: auth.AuthUser): void } + /** + * RecordOAuth2Login is an auth record OAuth2 login form. + */ + interface RecordOAuth2Login { /** - * RemoveFiles removes a single or multiple file from the specified file field. - * - * NB! If filesToDelete is not set it will remove all existing files - * assigned to the file field (including those assigned with AddFiles)! - * - * Example - * - * ``` - * // mark only only 2 files for removal - * form.AddFiles("documents", "file1_aw4bdrvws6.txt", "file2_xwbs36bafv.txt") - * - * // mark all "documents" files for removal - * form.AddFiles("documents") - * ``` + * The name of the OAuth2 client provider (eg. "google") */ - removeFiles(key: string, ...toDelete: string[]): void + provider: string + /** + * The authorization code returned from the initial request. + */ + code: string + /** + * The code verifier sent with the initial request as part of the code_challenge. + */ + codeVerifier: string + /** + * The redirect url sent with the initial request. + */ + redirectUrl: string + /** + * Additional data that will be used for creating a new auth record + * if an existing OAuth2 account doesn't exist. + */ + createData: _TygojaDict } - interface RecordUpsert { + interface newRecordOAuth2Login { /** - * LoadData loads and normalizes the provided regular record data fields into the form. + * NewRecordOAuth2Login creates a new [RecordOAuth2Login] form with + * initialized with from the provided [core.App] instance. + * + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - loadData(requestInfo: _TygojaDict): void + (app: core.App, collection: models.Collection, optAuthRecord: models.Record): (RecordOAuth2Login | undefined) } - interface RecordUpsert { + interface RecordOAuth2Login { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * SetDao replaces the default form Dao instance with the provided one. */ - validate(): void + setDao(dao: daos.Dao): void } - interface RecordUpsert { - validateAndFill(): void + interface RecordOAuth2Login { + /** + * SetBeforeNewRecordCreateFunc sets a before OAuth2 record create callback handler. + */ + setBeforeNewRecordCreateFunc(f: BeforeOAuth2RecordCreateFunc): void } - interface RecordUpsert { + interface RecordOAuth2Login { /** - * DrySubmit performs a form submit within a transaction and reverts it. - * For actual record persistence, check the `form.Submit()` method. - * - * This method doesn't handle file uploads/deletes or trigger any app events! + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - drySubmit(callback: (txDao: daos.Dao) => void): void + validate(): void } - interface RecordUpsert { + interface RecordOAuth2Login { /** - * Submit validates the form and upserts the form Record model. + * Submit validates and submits the form. * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * If an auth record doesn't exist, it will make an attempt to create it + * based on the fetched OAuth2 profile data via a local [RecordUpsert] form. + * You can intercept/modify the Record create form with [form.SetBeforeNewRecordCreateFunc()]. + * + * You can also optionally provide a list of InterceptorFunc to + * further modify the form behavior before persisting it. + * + * On success returns the authorized record model and the fetched provider's data. */ - submit(...interceptors: InterceptorFunc[]): void + submit(...interceptors: InterceptorFunc[]): [(models.Record | undefined), (auth.AuthUser | undefined)] } /** - * RecordVerificationConfirm is an auth record email verification confirmation form. + * RecordPasswordLogin is record username/email + password login form. */ - interface RecordVerificationConfirm { - token: string + interface RecordPasswordLogin { + identity: string + password: string } - interface newRecordVerificationConfirm { + interface newRecordPasswordLogin { /** - * NewRecordVerificationConfirm creates a new [RecordVerificationConfirm] - * form initialized with from the provided [core.App] instance. + * NewRecordPasswordLogin creates a new [RecordPasswordLogin] form initialized + * with from the provided [core.App] and [models.Collection] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, collection: models.Collection): (RecordVerificationConfirm | undefined) + (app: core.App, collection: models.Collection): (RecordPasswordLogin | undefined) } - interface RecordVerificationConfirm { + interface RecordPasswordLogin { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordVerificationConfirm { + interface RecordPasswordLogin { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. */ validate(): void } - interface RecordVerificationConfirm { + interface RecordPasswordLogin { /** * Submit validates and submits the form. - * On success returns the verified auth record associated to `form.Token`. + * On success returns the authorized record model. * - * You can optionally provide a list of InterceptorFunc to further - * modify the form behavior before persisting it. + * You can optionally provide a list of InterceptorFunc to + * further modify the form behavior before persisting it. */ submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) } /** - * RecordVerificationRequest is an auth record email verification request form. + * RecordPasswordResetConfirm is an auth record password reset confirmation form. */ - interface RecordVerificationRequest { - email: string + interface RecordPasswordResetConfirm { + token: string + password: string + passwordConfirm: string } - interface newRecordVerificationRequest { + interface newRecordPasswordResetConfirm { /** - * NewRecordVerificationRequest creates a new [RecordVerificationRequest] + * NewRecordPasswordResetConfirm creates a new [RecordPasswordResetConfirm] * form initialized with from the provided [core.App] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App, collection: models.Collection): (RecordVerificationRequest | undefined) + (app: core.App, collection: models.Collection): (RecordPasswordResetConfirm | undefined) } - interface RecordVerificationRequest { + interface RecordPasswordResetConfirm { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface RecordVerificationRequest { + interface RecordPasswordResetConfirm { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. - * - * // This method doesn't verify that auth record with `form.Email` exists (this is done on Submit). */ validate(): void } - interface RecordVerificationRequest { + interface RecordPasswordResetConfirm { /** - * Submit validates and sends a verification request email - * to the `form.Email` auth record. + * Submit validates and submits the form. + * On success returns the updated auth record associated to `form.Token`. * * You can optionally provide a list of InterceptorFunc to further * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): void + submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) } /** - * SettingsUpsert is a [settings.Settings] upsert (create/update) form. + * RecordPasswordResetRequest is an auth record reset password request form. */ - type _subsElZW = settings.Settings - interface SettingsUpsert extends _subsElZW { + interface RecordPasswordResetRequest { + email: string } - interface newSettingsUpsert { + interface newRecordPasswordResetRequest { /** - * NewSettingsUpsert creates a new [SettingsUpsert] form with initializer - * config created from the provided [core.App] instance. + * NewRecordPasswordResetRequest creates a new [RecordPasswordResetRequest] + * form initialized with from the provided [core.App] instance. * * If you want to submit the form as part of a transaction, * you can change the default Dao via [SetDao()]. */ - (app: core.App): (SettingsUpsert | undefined) + (app: core.App, collection: models.Collection): (RecordPasswordResetRequest | undefined) } - interface SettingsUpsert { + interface RecordPasswordResetRequest { /** * SetDao replaces the default form Dao instance with the provided one. */ setDao(dao: daos.Dao): void } - interface SettingsUpsert { + interface RecordPasswordResetRequest { /** * Validate makes the form validatable by implementing [validation.Validatable] interface. + * + * This method doesn't checks whether auth record with `form.Email` exists (this is done on Submit). */ validate(): void } - interface SettingsUpsert { + interface RecordPasswordResetRequest { /** - * Submit validates the form and upserts the loaded settings. - * - * On success the app settings will be refreshed with the form ones. + * Submit validates and submits the form. + * On success, sends a password reset email to the `form.Email` auth record. * * You can optionally provide a list of InterceptorFunc to further * modify the form behavior before persisting it. */ - submit(...interceptors: InterceptorFunc[]): void + submit(...interceptors: InterceptorFunc[]): void } /** - * TestEmailSend is a email template test request form. + * RecordUpsert is a [models.Record] upsert (create/update) form. */ - interface TestEmailSend { - template: string - email: string - } - interface newTestEmailSend { + interface RecordUpsert { /** - * NewTestEmailSend creates and initializes new TestEmailSend form. + * base model fields */ - (app: core.App): (TestEmailSend | undefined) - } - interface TestEmailSend { + id: string /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * auth collection fields + * --- */ - validate(): void + username: string + email: string + emailVisibility: boolean + verified: boolean + password: string + passwordConfirm: string + oldPassword: string } - interface TestEmailSend { + interface newRecordUpsert { /** - * Submit validates and sends a test email to the form.Email address. + * NewRecordUpsert creates a new [RecordUpsert] form with initializer + * config created from the provided [core.App] and [models.Record] instances + * (for create you could pass a pointer to an empty Record - models.NewRecord(collection)). + * + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - submit(): void + (app: core.App, record: models.Record): (RecordUpsert | undefined) } - /** - * TestS3Filesystem defines a S3 filesystem connection test. - */ - interface TestS3Filesystem { + interface RecordUpsert { /** - * The name of the filesystem - storage or backups + * Data returns the loaded form's data. */ - filesystem: string + data(): _TygojaDict } - interface newTestS3Filesystem { + interface RecordUpsert { /** - * NewTestS3Filesystem creates and initializes new TestS3Filesystem form. + * SetFullManageAccess sets the manageAccess bool flag of the current + * form to enable/disable directly changing some system record fields + * (often used with auth collection records). */ - (app: core.App): (TestS3Filesystem | undefined) + setFullManageAccess(fullManageAccess: boolean): void } - interface TestS3Filesystem { + interface RecordUpsert { /** - * Validate makes the form validatable by implementing [validation.Validatable] interface. + * SetDao replaces the default form Dao instance with the provided one. */ - validate(): void + setDao(dao: daos.Dao): void } - interface TestS3Filesystem { + interface RecordUpsert { /** - * Submit validates and performs a S3 filesystem connection test. - */ - submit(): void - } -} - -/** - * Package apis implements the default PocketBase api services and middlewares. - */ -namespace apis { - interface adminApi { - } - // @ts-ignore - import validation = ozzo_validation - /** - * ApiError defines the struct for a basic api error response. - */ - interface ApiError { - code: number - message: string - data: _TygojaDict - } - interface ApiError { - /** - * Error makes it compatible with the `error` interface. + * LoadRequest extracts the json or multipart/form-data request data + * and lods it into the form. + * + * File upload is supported only via multipart/form-data. */ - error(): string + loadRequest(r: http.Request, keyPrefix: string): void } - interface ApiError { + interface RecordUpsert { /** - * RawData returns the unformatted error data (could be an internal error, text, etc.) + * FilesToUpload returns the parsed request files ready for upload. */ - rawData(): any + filesToUpload(): _TygojaDict } - interface newNotFoundError { + interface RecordUpsert { /** - * NewNotFoundError creates and returns 404 `ApiError`. + * FilesToUpload returns the parsed request filenames ready to be deleted. */ - (message: string, data: any): (ApiError | undefined) + filesToDelete(): Array } - interface newBadRequestError { + interface RecordUpsert { /** - * NewBadRequestError creates and returns 400 `ApiError`. + * AddFiles adds the provided file(s) to the specified file field. + * + * If the file field is a SINGLE-value file field (aka. "Max Select = 1"), + * then the newly added file will REPLACE the existing one. + * In this case if you pass more than 1 files only the first one will be assigned. + * + * If the file field is a MULTI-value file field (aka. "Max Select > 1"), + * then the newly added file(s) will be APPENDED to the existing one(s). + * + * Example + * + * ``` + * f1, _ := filesystem.NewFileFromPath("/path/to/file1.txt") + * f2, _ := filesystem.NewFileFromPath("/path/to/file2.txt") + * form.AddFiles("documents", f1, f2) + * ``` */ - (message: string, data: any): (ApiError | undefined) + addFiles(key: string, ...files: (filesystem.File | undefined)[]): void } - interface newForbiddenError { + interface RecordUpsert { /** - * NewForbiddenError creates and returns 403 `ApiError`. + * RemoveFiles removes a single or multiple file from the specified file field. + * + * NB! If filesToDelete is not set it will remove all existing files + * assigned to the file field (including those assigned with AddFiles)! + * + * Example + * + * ``` + * // mark only only 2 files for removal + * form.AddFiles("documents", "file1_aw4bdrvws6.txt", "file2_xwbs36bafv.txt") + * + * // mark all "documents" files for removal + * form.AddFiles("documents") + * ``` */ - (message: string, data: any): (ApiError | undefined) + removeFiles(key: string, ...toDelete: string[]): void } - interface newUnauthorizedError { + interface RecordUpsert { /** - * NewUnauthorizedError creates and returns 401 `ApiError`. + * LoadData loads and normalizes the provided regular record data fields into the form. */ - (message: string, data: any): (ApiError | undefined) + loadData(requestInfo: _TygojaDict): void } - interface newApiError { + interface RecordUpsert { /** - * NewApiError creates and returns new normalized `ApiError` instance. + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - (status: number, message: string, data: any): (ApiError | undefined) + validate(): void } - interface backupApi { + interface RecordUpsert { + validateAndFill(): void } - interface initApi { + interface RecordUpsert { /** - * InitApi creates a configured echo instance with registered - * system and app specific routes and middlewares. + * DrySubmit performs a form submit within a transaction and reverts it. + * For actual record persistence, check the `form.Submit()` method. + * + * This method doesn't handle file uploads/deletes or trigger any app events! */ - (app: core.App): (echo.Echo | undefined) + drySubmit(callback: (txDao: daos.Dao) => void): void } - interface staticDirectoryHandler { + interface RecordUpsert { /** - * StaticDirectoryHandler is similar to `echo.StaticDirectoryHandler` - * but without the directory redirect which conflicts with RemoveTrailingSlash middleware. - * - * If a file resource is missing and indexFallback is set, the request - * will be forwarded to the base index.html (useful also for SPA). + * Submit validates the form and upserts the form Record model. * - * @see https://github.com/labstack/echo/issues/2211 + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - (fileSystem: fs.FS, indexFallback: boolean): echo.HandlerFunc - } - interface collectionApi { - } - interface fileApi { - } - interface healthApi { - } - interface healthCheckResponse { - code: number - message: string - data: { - canBackup: boolean - } + submit(...interceptors: InterceptorFunc[]): void } - interface logsApi { + /** + * RecordVerificationConfirm is an auth record email verification confirmation form. + */ + interface RecordVerificationConfirm { + token: string } - interface requireGuestOnly { + interface newRecordVerificationConfirm { /** - * RequireGuestOnly middleware requires a request to NOT have a valid - * Authorization header. + * NewRecordVerificationConfirm creates a new [RecordVerificationConfirm] + * form initialized with from the provided [core.App] instance. * - * This middleware is the opposite of [apis.RequireAdminOrRecordAuth()]. + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - (): echo.MiddlewareFunc + (app: core.App, collection: models.Collection): (RecordVerificationConfirm | undefined) } - interface requireRecordAuth { + interface RecordVerificationConfirm { /** - * RequireRecordAuth middleware requires a request to have - * a valid record auth Authorization header. - * - * The auth record could be from any collection. - * - * You can further filter the allowed record auth collections by - * specifying their names. - * - * Example: - * - * ``` - * apis.RequireRecordAuth() - * ``` - * - * Or: - * - * ``` - * apis.RequireRecordAuth("users", "supervisors") - * ``` - * - * To restrict the auth record only to the loaded context collection, - * use [apis.RequireSameContextRecordAuth()] instead. + * SetDao replaces the default form Dao instance with the provided one. */ - (...optCollectionNames: string[]): echo.MiddlewareFunc + setDao(dao: daos.Dao): void } - interface requireSameContextRecordAuth { + interface RecordVerificationConfirm { /** - * RequireSameContextRecordAuth middleware requires a request to have - * a valid record Authorization header. - * - * The auth record must be from the same collection already loaded in the context. + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - (): echo.MiddlewareFunc + validate(): void } - interface requireAdminAuth { + interface RecordVerificationConfirm { /** - * RequireAdminAuth middleware requires a request to have - * a valid admin Authorization header. + * Submit validates and submits the form. + * On success returns the verified auth record associated to `form.Token`. + * + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - (): echo.MiddlewareFunc + submit(...interceptors: InterceptorFunc[]): (models.Record | undefined) } - interface requireAdminAuthOnlyIfAny { - /** - * RequireAdminAuthOnlyIfAny middleware requires a request to have - * a valid admin Authorization header ONLY if the application has - * at least 1 existing Admin model. - */ - (app: core.App): echo.MiddlewareFunc + /** + * RecordVerificationRequest is an auth record email verification request form. + */ + interface RecordVerificationRequest { + email: string } - interface requireAdminOrRecordAuth { + interface newRecordVerificationRequest { /** - * RequireAdminOrRecordAuth middleware requires a request to have - * a valid admin or record Authorization header set. - * - * You can further filter the allowed auth record collections by providing their names. + * NewRecordVerificationRequest creates a new [RecordVerificationRequest] + * form initialized with from the provided [core.App] instance. * - * This middleware is the opposite of [apis.RequireGuestOnly()]. + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - (...optCollectionNames: string[]): echo.MiddlewareFunc + (app: core.App, collection: models.Collection): (RecordVerificationRequest | undefined) } - interface requireAdminOrOwnerAuth { + interface RecordVerificationRequest { /** - * RequireAdminOrOwnerAuth middleware requires a request to have - * a valid admin or auth record owner Authorization header set. - * - * This middleware is similar to [apis.RequireAdminOrRecordAuth()] but - * for the auth record token expects to have the same id as the path - * parameter ownerIdParam (default to "id" if empty). + * SetDao replaces the default form Dao instance with the provided one. */ - (ownerIdParam: string): echo.MiddlewareFunc + setDao(dao: daos.Dao): void } - interface loadAuthContext { + interface RecordVerificationRequest { /** - * LoadAuthContext middleware reads the Authorization request header - * and loads the token related record or admin instance into the - * request's context. + * Validate makes the form validatable by implementing [validation.Validatable] interface. * - * This middleware is expected to be already registered by default for all routes. + * // This method doesn't verify that auth record with `form.Email` exists (this is done on Submit). */ - (app: core.App): echo.MiddlewareFunc + validate(): void } - interface loadCollectionContext { + interface RecordVerificationRequest { /** - * LoadCollectionContext middleware finds the collection with related - * path identifier and loads it into the request context. + * Submit validates and sends a verification request email + * to the `form.Email` auth record. * - * Set optCollectionTypes to further filter the found collection by its type. + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - (app: core.App, ...optCollectionTypes: string[]): echo.MiddlewareFunc + submit(...interceptors: InterceptorFunc[]): void } - interface activityLogger { - /** - * ActivityLogger middleware takes care to save the request information - * into the logs database. + /** + * SettingsUpsert is a [settings.Settings] upsert (create/update) form. + */ + type _subtoOEh = settings.Settings + interface SettingsUpsert extends _subtoOEh { + } + interface newSettingsUpsert { + /** + * NewSettingsUpsert creates a new [SettingsUpsert] form with initializer + * config created from the provided [core.App] instance. * - * The middleware does nothing if the app logs retention period is zero - * (aka. app.Settings().Logs.MaxDays = 0). + * If you want to submit the form as part of a transaction, + * you can change the default Dao via [SetDao()]. */ - (app: core.App): echo.MiddlewareFunc - } - interface realtimeApi { - } - interface recordData { - action: string - record?: models.Record - } - interface getter { - get(_arg0: string): any - } - interface recordAuthApi { - } - interface providerInfo { - name: string - state: string - codeVerifier: string - codeChallenge: string - codeChallengeMethod: string - authUrl: string + (app: core.App): (SettingsUpsert | undefined) } - interface recordApi { + interface SettingsUpsert { + /** + * SetDao replaces the default form Dao instance with the provided one. + */ + setDao(dao: daos.Dao): void } - interface requestData { + interface SettingsUpsert { /** - * Deprecated: Use RequestInfo instead. + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - (c: echo.Context): (models.RequestInfo | undefined) + validate(): void } - interface requestInfo { + interface SettingsUpsert { /** - * RequestInfo exports cached common request data fields - * (query, body, logged auth state, etc.) from the provided context. + * Submit validates the form and upserts the loaded settings. + * + * On success the app settings will be refreshed with the form ones. + * + * You can optionally provide a list of InterceptorFunc to further + * modify the form behavior before persisting it. */ - (c: echo.Context): (models.RequestInfo | undefined) + submit(...interceptors: InterceptorFunc[]): void } - interface recordAuthResponse { + /** + * TestEmailSend is a email template test request form. + */ + interface TestEmailSend { + template: string + email: string + } + interface newTestEmailSend { /** - * RecordAuthResponse writes standardised json record auth response - * into the specified request context. + * NewTestEmailSend creates and initializes new TestEmailSend form. */ - (app: core.App, c: echo.Context, authRecord: models.Record, meta: any, ...finalizers: ((token: string) => void)[]): void + (app: core.App): (TestEmailSend | undefined) } - interface enrichRecord { + interface TestEmailSend { /** - * EnrichRecord parses the request context and enrich the provided record: - * ``` - * - expands relations (if defaultExpands and/or ?expand query param is set) - * - ensures that the emails of the auth record and its expanded auth relations - * are visibe only for the current logged admin, record owner or record with manage access - * ``` + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - (c: echo.Context, dao: daos.Dao, record: models.Record, ...defaultExpands: string[]): void + validate(): void } - interface enrichRecords { + interface TestEmailSend { /** - * EnrichRecords parses the request context and enriches the provided records: - * ``` - * - expands relations (if defaultExpands and/or ?expand query param is set) - * - ensures that the emails of the auth records and their expanded auth relations - * are visibe only for the current logged admin, record owner or record with manage access - * ``` + * Submit validates and sends a test email to the form.Email address. */ - (c: echo.Context, dao: daos.Dao, records: Array<(models.Record | undefined)>, ...defaultExpands: string[]): void + submit(): void } /** - * ServeConfig defines a configuration struct for apis.Serve(). + * TestS3Filesystem defines a S3 filesystem connection test. */ - interface ServeConfig { - /** - * ShowStartBanner indicates whether to show or hide the server start console message. - */ - showStartBanner: boolean + interface TestS3Filesystem { /** - * HttpAddr is the HTTP server address to bind (eg. `127.0.0.1:80`). + * The name of the filesystem - storage or backups */ - httpAddr: string + filesystem: string + } + interface newTestS3Filesystem { /** - * HttpsAddr is the HTTPS server address to bind (eg. `127.0.0.1:443`). + * NewTestS3Filesystem creates and initializes new TestS3Filesystem form. */ - httpsAddr: string + (app: core.App): (TestS3Filesystem | undefined) + } + interface TestS3Filesystem { /** - * AllowedOrigins is an optional list of CORS origins (default to "*"). + * Validate makes the form validatable by implementing [validation.Validatable] interface. */ - allowedOrigins: Array + validate(): void } - interface serve { + interface TestS3Filesystem { /** - * Serve starts a new app web server. + * Submit validates and performs a S3 filesystem connection test. */ - (app: core.App, config: ServeConfig): (http.Server | undefined) - } - interface migrationsConnection { - db?: dbx.DB - migrationsList: migrate.MigrationsList - } - interface settingsApi { + submit(): void } } -namespace pocketbase { - /** - * appWrapper serves as a private core.App instance wrapper. - */ - type _subtXyBx = core.App - interface appWrapper extends _subtXyBx { +/** + * Package apis implements the default PocketBase api services and middlewares. + */ +namespace apis { + interface adminApi { } + // @ts-ignore + import validation = ozzo_validation /** - * PocketBase defines a PocketBase app launcher. - * - * It implements [core.App] via embedding and all of the app interface methods - * could be accessed directly through the instance (eg. PocketBase.DataDir()). + * ApiError defines the struct for a basic api error response. */ - type _subchplh = appWrapper - interface PocketBase extends _subchplh { + interface ApiError { + code: number + message: string + data: _TygojaDict + } + interface ApiError { /** - * RootCmd is the main console command + * Error makes it compatible with the `error` interface. */ - rootCmd?: cobra.Command + error(): string } - /** - * Config is the PocketBase initialization config struct. - */ - interface Config { + interface ApiError { /** - * optional default values for the console flags + * RawData returns the unformatted error data (could be an internal error, text, etc.) */ - defaultDebug: boolean - defaultDataDir: string // if not set, it will fallback to "./pb_data" - defaultEncryptionEnv: string + rawData(): any + } + interface newNotFoundError { /** - * hide the default console server info on app startup + * NewNotFoundError creates and returns 404 `ApiError`. */ - hideStartBanner: boolean + (message: string, data: any): (ApiError | undefined) + } + interface newBadRequestError { /** - * optional DB configurations + * NewBadRequestError creates and returns 400 `ApiError`. */ - dataMaxOpenConns: number // default to core.DefaultDataMaxOpenConns - dataMaxIdleConns: number // default to core.DefaultDataMaxIdleConns - logsMaxOpenConns: number // default to core.DefaultLogsMaxOpenConns - logsMaxIdleConns: number // default to core.DefaultLogsMaxIdleConns + (message: string, data: any): (ApiError | undefined) } - interface _new { + interface newForbiddenError { /** - * New creates a new PocketBase instance with the default configuration. - * Use [NewWithConfig()] if you want to provide a custom configuration. - * - * Note that the application will not be initialized/bootstrapped yet, - * aka. DB connections, migrations, app settings, etc. will not be accessible. - * Everything will be initialized when [Start()] is executed. - * If you want to initialize the application before calling [Start()], - * then you'll have to manually call [Bootstrap()]. + * NewForbiddenError creates and returns 403 `ApiError`. */ - (): (PocketBase | undefined) + (message: string, data: any): (ApiError | undefined) } - interface newWithConfig { + interface newUnauthorizedError { /** - * NewWithConfig creates a new PocketBase instance with the provided config. - * - * Note that the application will not be initialized/bootstrapped yet, - * aka. DB connections, migrations, app settings, etc. will not be accessible. - * Everything will be initialized when [Start()] is executed. - * If you want to initialize the application before calling [Start()], - * then you'll have to manually call [Bootstrap()]. + * NewUnauthorizedError creates and returns 401 `ApiError`. */ - (config: Config): (PocketBase | undefined) + (message: string, data: any): (ApiError | undefined) } - interface PocketBase { + interface newApiError { /** - * Start starts the application, aka. registers the default system - * commands (serve, migrate, version) and executes pb.RootCmd. + * NewApiError creates and returns new normalized `ApiError` instance. */ - start(): void + (status: number, message: string, data: any): (ApiError | undefined) } - interface PocketBase { + interface backupApi { + } + interface initApi { /** - * Execute initializes the application (if not already) and executes - * the pb.RootCmd with graceful shutdown support. - * - * This method differs from pb.Start() by not registering the default - * system commands! + * InitApi creates a configured echo instance with registered + * system and app specific routes and middlewares. */ - execute(): void + (app: core.App): (echo.Echo | undefined) } -} - -/** - * Package template is a thin wrapper arround the standard html/template - * and text/template packages that implements a convenient registry to - * load and cache templates on the fly concurrently. - * - * It was created to assist the JSVM plugin HTML rendering, but could be used in other Go code. - * - * Example: - * ``` - * registry := template.NewRegistry() - * - * html1, err := registry.LoadFiles( - * // the files set wil be parsed only once and then cached - * "layout.html", - * "content.html", - * ).Render(map[string]any{"name": "John"}) - * - * html2, err := registry.LoadFiles( - * // reuse the already parsed and cached files set - * "layout.html", - * "content.html", - * ).Render(map[string]any{"name": "Jane"}) - * ``` - */ -namespace template { - interface newRegistry { + interface staticDirectoryHandler { /** - * NewRegistry creates and initializes a new blank templates registry. - * - * Use the Registry.Load* methods to load templates into the registry. + * StaticDirectoryHandler is similar to `echo.StaticDirectoryHandler` + * but without the directory redirect which conflicts with RemoveTrailingSlash middleware. + * + * If a file resource is missing and indexFallback is set, the request + * will be forwarded to the base index.html (useful also for SPA). + * + * @see https://github.com/labstack/echo/issues/2211 */ - (): (Registry | undefined) + (fileSystem: fs.FS, indexFallback: boolean): echo.HandlerFunc } - /** - * Registry defines a templates registry that is safe to be used by multiple goroutines. - * - * Use the Registry.Load* methods to load templates into the registry. - */ - interface Registry { + interface collectionApi { } - interface Registry { + interface fileApi { + } + interface healthApi { + } + interface healthCheckResponse { + code: number + message: string + data: { + canBackup: boolean + } + } + interface logsApi { + } + interface requireGuestOnly { /** - * LoadFiles caches (if not already) the specified filenames set as a - * single template and returns a ready to use Renderer instance. + * RequireGuestOnly middleware requires a request to NOT have a valid + * Authorization header. * - * There must be at least 1 filename specified. + * This middleware is the opposite of [apis.RequireAdminOrRecordAuth()]. */ - loadFiles(...filenames: string[]): (Renderer | undefined) + (): echo.MiddlewareFunc } - interface Registry { + interface requireRecordAuth { /** - * LoadString caches (if not already) the specified inline string as a - * single template and returns a ready to use Renderer instance. + * RequireRecordAuth middleware requires a request to have + * a valid record auth Authorization header. + * + * The auth record could be from any collection. + * + * You can further filter the allowed record auth collections by + * specifying their names. + * + * Example: + * + * ``` + * apis.RequireRecordAuth() + * ``` + * + * Or: + * + * ``` + * apis.RequireRecordAuth("users", "supervisors") + * ``` + * + * To restrict the auth record only to the loaded context collection, + * use [apis.RequireSameContextRecordAuth()] instead. */ - loadString(text: string): (Renderer | undefined) + (...optCollectionNames: string[]): echo.MiddlewareFunc } - interface Registry { + interface requireSameContextRecordAuth { /** - * LoadString caches (if not already) the specified fs and globPatterns - * pair as single template and returns a ready to use Renderer instance. + * RequireSameContextRecordAuth middleware requires a request to have + * a valid record Authorization header. * - * There must be at least 1 file matching the provided globPattern(s) - * (note that most file names serves as glob patterns matching themselves). + * The auth record must be from the same collection already loaded in the context. */ - loadFS(fs: fs.FS, ...globPatterns: string[]): (Renderer | undefined) - } - /** - * Renderer defines a single parsed template. - */ - interface Renderer { + (): echo.MiddlewareFunc } - interface Renderer { + interface requireAdminAuth { /** - * Render executes the template with the specified data as the dot object - * and returns the result as plain string. + * RequireAdminAuth middleware requires a request to have + * a valid admin Authorization header. */ - render(data: any): string - } -} - -/** - * Package io provides basic interfaces to I/O primitives. - * Its primary job is to wrap existing implementations of such primitives, - * such as those in package os, into shared public interfaces that - * abstract the functionality, plus some other related primitives. - * - * Because these interfaces and primitives wrap lower-level operations with - * various implementations, unless otherwise informed clients should not - * assume they are safe for parallel execution. - */ -namespace io { - /** - * Reader is the interface that wraps the basic Read method. - * - * Read reads up to len(p) bytes into p. It returns the number of bytes - * read (0 <= n <= len(p)) and any error encountered. Even if Read - * returns n < len(p), it may use all of p as scratch space during the call. - * If some data is available but not len(p) bytes, Read conventionally - * returns what is available instead of waiting for more. - * - * When Read encounters an error or end-of-file condition after - * successfully reading n > 0 bytes, it returns the number of - * bytes read. It may return the (non-nil) error from the same call - * or return the error (and n == 0) from a subsequent call. - * An instance of this general case is that a Reader returning - * a non-zero number of bytes at the end of the input stream may - * return either err == EOF or err == nil. The next Read should - * return 0, EOF. - * - * Callers should always process the n > 0 bytes returned before - * considering the error err. Doing so correctly handles I/O errors - * that happen after reading some bytes and also both of the - * allowed EOF behaviors. - * - * Implementations of Read are discouraged from returning a - * zero byte count with a nil error, except when len(p) == 0. - * Callers should treat a return of 0 and nil as indicating that - * nothing happened; in particular it does not indicate EOF. - * - * Implementations must not retain p. - */ - interface Reader { - read(p: string): number - } - /** - * Writer is the interface that wraps the basic Write method. - * - * Write writes len(p) bytes from p to the underlying data stream. - * It returns the number of bytes written from p (0 <= n <= len(p)) - * and any error encountered that caused the write to stop early. - * Write must return a non-nil error if it returns n < len(p). - * Write must not modify the slice data, even temporarily. - * - * Implementations must not retain p. - */ - interface Writer { - write(p: string): number - } - /** - * ReadSeekCloser is the interface that groups the basic Read, Seek and Close - * methods. - */ - interface ReadSeekCloser { + (): echo.MiddlewareFunc } -} - -/** - * Package syscall contains an interface to the low-level operating system - * primitives. The details vary depending on the underlying system, and - * by default, godoc will display the syscall documentation for the current - * system. If you want godoc to display syscall documentation for another - * system, set $GOOS and $GOARCH to the desired system. For example, if - * you want to view documentation for freebsd/arm on linux/amd64, set $GOOS - * to freebsd and $GOARCH to arm. - * The primary use of syscall is inside other packages that provide a more - * portable interface to the system, such as "os", "time" and "net". Use - * those packages rather than this one if you can. - * For details of the functions and data types in this package consult - * the manuals for the appropriate operating system. - * These calls return err == nil to indicate success; otherwise - * err is an operating system error describing the failure. - * On most systems, that error has type syscall.Errno. - * - * Deprecated: this package is locked down. Callers should use the - * corresponding package in the golang.org/x/sys repository instead. - * That is also where updates required by new systems or versions - * should be applied. See https://golang.org/s/go1.4-syscall for more - * information. - */ -namespace syscall { - interface SysProcAttr { - chroot: string // Chroot. - credential?: Credential // Credential. + interface requireAdminAuthOnlyIfAny { /** - * Ptrace tells the child to call ptrace(PTRACE_TRACEME). - * Call runtime.LockOSThread before starting a process with this set, - * and don't call UnlockOSThread until done with PtraceSyscall calls. + * RequireAdminAuthOnlyIfAny middleware requires a request to have + * a valid admin Authorization header ONLY if the application has + * at least 1 existing Admin model. */ - ptrace: boolean - setsid: boolean // Create session. + (app: core.App): echo.MiddlewareFunc + } + interface requireAdminOrRecordAuth { /** - * Setpgid sets the process group ID of the child to Pgid, - * or, if Pgid == 0, to the new child's process ID. + * RequireAdminOrRecordAuth middleware requires a request to have + * a valid admin or record Authorization header set. + * + * You can further filter the allowed auth record collections by providing their names. + * + * This middleware is the opposite of [apis.RequireGuestOnly()]. */ - setpgid: boolean + (...optCollectionNames: string[]): echo.MiddlewareFunc + } + interface requireAdminOrOwnerAuth { /** - * Setctty sets the controlling terminal of the child to - * file descriptor Ctty. Ctty must be a descriptor number - * in the child process: an index into ProcAttr.Files. - * This is only meaningful if Setsid is true. + * RequireAdminOrOwnerAuth middleware requires a request to have + * a valid admin or auth record owner Authorization header set. + * + * This middleware is similar to [apis.RequireAdminOrRecordAuth()] but + * for the auth record token expects to have the same id as the path + * parameter ownerIdParam (default to "id" if empty). */ - setctty: boolean - noctty: boolean // Detach fd 0 from controlling terminal - ctty: number // Controlling TTY fd + (ownerIdParam: string): echo.MiddlewareFunc + } + interface loadAuthContext { /** - * Foreground places the child process group in the foreground. - * This implies Setpgid. The Ctty field must be set to - * the descriptor of the controlling TTY. - * Unlike Setctty, in this case Ctty must be a descriptor - * number in the parent process. + * LoadAuthContext middleware reads the Authorization request header + * and loads the token related record or admin instance into the + * request's context. + * + * This middleware is expected to be already registered by default for all routes. */ - foreground: boolean - pgid: number // Child's process group ID if Setpgid. - pdeathsig: Signal // Signal that the process will get when its parent dies (Linux and FreeBSD only) - cloneflags: number // Flags for clone calls (Linux only) - unshareflags: number // Flags for unshare calls (Linux only) - uidMappings: Array // User ID mappings for user namespaces. - gidMappings: Array // Group ID mappings for user namespaces. + (app: core.App): echo.MiddlewareFunc + } + interface loadCollectionContext { /** - * GidMappingsEnableSetgroups enabling setgroups syscall. - * If false, then setgroups syscall will be disabled for the child process. - * This parameter is no-op if GidMappings == nil. Otherwise for unprivileged - * users this should be set to false for mappings work. + * LoadCollectionContext middleware finds the collection with related + * path identifier and loads it into the request context. + * + * Set optCollectionTypes to further filter the found collection by its type. */ - gidMappingsEnableSetgroups: boolean - ambientCaps: Array // Ambient capabilities (Linux only) + (app: core.App, ...optCollectionTypes: string[]): echo.MiddlewareFunc + } + interface activityLogger { + /** + * ActivityLogger middleware takes care to save the request information + * into the logs database. + * + * The middleware does nothing if the app logs retention period is zero + * (aka. app.Settings().Logs.MaxDays = 0). + */ + (app: core.App): echo.MiddlewareFunc + } + interface realtimeApi { + } + interface recordData { + action: string + record?: models.Record + } + interface getter { + get(_arg0: string): any + } + interface recordAuthApi { + } + interface providerInfo { + name: string + state: string + codeVerifier: string + codeChallenge: string + codeChallengeMethod: string + authUrl: string + } + interface recordApi { + } + interface requestData { + /** + * Deprecated: Use RequestInfo instead. + */ + (c: echo.Context): (models.RequestInfo | undefined) + } + interface requestInfo { + /** + * RequestInfo exports cached common request data fields + * (query, body, logged auth state, etc.) from the provided context. + */ + (c: echo.Context): (models.RequestInfo | undefined) + } + interface recordAuthResponse { + /** + * RecordAuthResponse writes standardised json record auth response + * into the specified request context. + */ + (app: core.App, c: echo.Context, authRecord: models.Record, meta: any, ...finalizers: ((token: string) => void)[]): void + } + interface enrichRecord { + /** + * EnrichRecord parses the request context and enrich the provided record: + * ``` + * - expands relations (if defaultExpands and/or ?expand query param is set) + * - ensures that the emails of the auth record and its expanded auth relations + * are visibe only for the current logged admin, record owner or record with manage access + * ``` + */ + (c: echo.Context, dao: daos.Dao, record: models.Record, ...defaultExpands: string[]): void + } + interface enrichRecords { + /** + * EnrichRecords parses the request context and enriches the provided records: + * ``` + * - expands relations (if defaultExpands and/or ?expand query param is set) + * - ensures that the emails of the auth records and their expanded auth relations + * are visibe only for the current logged admin, record owner or record with manage access + * ``` + */ + (c: echo.Context, dao: daos.Dao, records: Array<(models.Record | undefined)>, ...defaultExpands: string[]): void } - // @ts-ignore - import errorspkg = errors /** - * A RawConn is a raw network connection. + * ServeConfig defines a configuration struct for apis.Serve(). */ - interface RawConn { + interface ServeConfig { /** - * Control invokes f on the underlying connection's file - * descriptor or handle. - * The file descriptor fd is guaranteed to remain valid while - * f executes but not after f returns. + * ShowStartBanner indicates whether to show or hide the server start console message. */ - control(f: (fd: number) => void): void + showStartBanner: boolean /** - * Read invokes f on the underlying connection's file - * descriptor or handle; f is expected to try to read from the - * file descriptor. - * If f returns true, Read returns. Otherwise Read blocks - * waiting for the connection to be ready for reading and - * tries again repeatedly. - * The file descriptor is guaranteed to remain valid while f - * executes but not after f returns. + * HttpAddr is the HTTP server address to bind (eg. `127.0.0.1:80`). */ - read(f: (fd: number) => boolean): void + httpAddr: string /** - * Write is like Read but for writing. + * HttpsAddr is the HTTPS server address to bind (eg. `127.0.0.1:443`). */ - write(f: (fd: number) => boolean): void + httpsAddr: string + /** + * AllowedOrigins is an optional list of CORS origins (default to "*"). + */ + allowedOrigins: Array + } + interface serve { + /** + * Serve starts a new app web server. + */ + (app: core.App, config: ServeConfig): (http.Server | undefined) + } + interface migrationsConnection { + db?: dbx.DB + migrationsList: migrate.MigrationsList + } + interface settingsApi { } +} + +namespace pocketbase { /** - * An Errno is an unsigned number describing an error condition. - * It implements the error interface. The zero Errno is by convention - * a non-error, so code to convert from Errno to error should use: - * ``` - * err = nil - * if errno != 0 { - * err = errno - * } - * ``` - * - * Errno values can be tested against error values from the os package - * using errors.Is. For example: + * appWrapper serves as a private core.App instance wrapper. + */ + type _subdcnhi = core.App + interface appWrapper extends _subdcnhi { + } + /** + * PocketBase defines a PocketBase app launcher. * - * ``` - * _, _, err := syscall.Syscall(...) - * if errors.Is(err, fs.ErrNotExist) ... - * ``` + * It implements [core.App] via embedding and all of the app interface methods + * could be accessed directly through the instance (eg. PocketBase.DataDir()). */ - interface Errno extends Number{} - interface Errno { - error(): string + type _subJtbox = appWrapper + interface PocketBase extends _subJtbox { + /** + * RootCmd is the main console command + */ + rootCmd?: cobra.Command } - interface Errno { - is(target: Error): boolean + /** + * Config is the PocketBase initialization config struct. + */ + interface Config { + /** + * optional default values for the console flags + */ + defaultDebug: boolean + defaultDataDir: string // if not set, it will fallback to "./pb_data" + defaultEncryptionEnv: string + /** + * hide the default console server info on app startup + */ + hideStartBanner: boolean + /** + * optional DB configurations + */ + dataMaxOpenConns: number // default to core.DefaultDataMaxOpenConns + dataMaxIdleConns: number // default to core.DefaultDataMaxIdleConns + logsMaxOpenConns: number // default to core.DefaultLogsMaxOpenConns + logsMaxIdleConns: number // default to core.DefaultLogsMaxIdleConns } - interface Errno { - temporary(): boolean + interface _new { + /** + * New creates a new PocketBase instance with the default configuration. + * Use [NewWithConfig()] if you want to provide a custom configuration. + * + * Note that the application will not be initialized/bootstrapped yet, + * aka. DB connections, migrations, app settings, etc. will not be accessible. + * Everything will be initialized when [Start()] is executed. + * If you want to initialize the application before calling [Start()], + * then you'll have to manually call [Bootstrap()]. + */ + (): (PocketBase | undefined) } - interface Errno { - timeout(): boolean + interface newWithConfig { + /** + * NewWithConfig creates a new PocketBase instance with the provided config. + * + * Note that the application will not be initialized/bootstrapped yet, + * aka. DB connections, migrations, app settings, etc. will not be accessible. + * Everything will be initialized when [Start()] is executed. + * If you want to initialize the application before calling [Start()], + * then you'll have to manually call [Bootstrap()]. + */ + (config: Config): (PocketBase | undefined) + } + interface PocketBase { + /** + * Start starts the application, aka. registers the default system + * commands (serve, migrate, version) and executes pb.RootCmd. + */ + start(): void + } + interface PocketBase { + /** + * Execute initializes the application (if not already) and executes + * the pb.RootCmd with graceful shutdown support. + * + * This method differs from pb.Start() by not registering the default + * system commands! + */ + execute(): void } } /** - * Package time provides functionality for measuring and displaying time. - * - * The calendrical calculations always assume a Gregorian calendar, with - * no leap seconds. - * - * Monotonic Clocks + * Package template is a thin wrapper around the standard html/template + * and text/template packages that implements a convenient registry to + * load and cache templates on the fly concurrently. * - * Operating systems provide both a “wall clock,” which is subject to - * changes for clock synchronization, and a “monotonic clock,” which is - * not. The general rule is that the wall clock is for telling time and - * the monotonic clock is for measuring time. Rather than split the API, - * in this package the Time returned by time.Now contains both a wall - * clock reading and a monotonic clock reading; later time-telling - * operations use the wall clock reading, but later time-measuring - * operations, specifically comparisons and subtractions, use the - * monotonic clock reading. + * It was created to assist the JSVM plugin HTML rendering, but could be used in other Go code. * - * For example, this code always computes a positive elapsed time of - * approximately 20 milliseconds, even if the wall clock is changed during - * the operation being timed: + * Example: * * ``` - * start := time.Now() - * ... operation that takes 20 milliseconds ... - * t := time.Now() - * elapsed := t.Sub(start) - * ``` + * registry := template.NewRegistry() * - * Other idioms, such as time.Since(start), time.Until(deadline), and - * time.Now().Before(deadline), are similarly robust against wall clock - * resets. + * html1, err := registry.LoadFiles( + * // the files set wil be parsed only once and then cached + * "layout.html", + * "content.html", + * ).Render(map[string]any{"name": "John"}) * - * The rest of this section gives the precise details of how operations + * html2, err := registry.LoadFiles( + * // reuse the already parsed and cached files set + * "layout.html", + * "content.html", + * ).Render(map[string]any{"name": "Jane"}) + * ``` + */ +namespace template { + interface newRegistry { + /** + * NewRegistry creates and initializes a new blank templates registry. + * + * Use the Registry.Load* methods to load templates into the registry. + */ + (): (Registry | undefined) + } + /** + * Registry defines a templates registry that is safe to be used by multiple goroutines. + * + * Use the Registry.Load* methods to load templates into the registry. + */ + interface Registry { + } + interface Registry { + /** + * LoadFiles caches (if not already) the specified filenames set as a + * single template and returns a ready to use Renderer instance. + * + * There must be at least 1 filename specified. + */ + loadFiles(...filenames: string[]): (Renderer | undefined) + } + interface Registry { + /** + * LoadString caches (if not already) the specified inline string as a + * single template and returns a ready to use Renderer instance. + */ + loadString(text: string): (Renderer | undefined) + } + interface Registry { + /** + * LoadString caches (if not already) the specified fs and globPatterns + * pair as single template and returns a ready to use Renderer instance. + * + * There must be at least 1 file matching the provided globPattern(s) + * (note that most file names serves as glob patterns matching themselves). + */ + loadFS(fs: fs.FS, ...globPatterns: string[]): (Renderer | undefined) + } + /** + * Renderer defines a single parsed template. + */ + interface Renderer { + } + interface Renderer { + /** + * Render executes the template with the specified data as the dot object + * and returns the result as plain string. + */ + render(data: any): string + } +} + +/** + * Package syscall contains an interface to the low-level operating system + * primitives. The details vary depending on the underlying system, and + * by default, godoc will display the syscall documentation for the current + * system. If you want godoc to display syscall documentation for another + * system, set $GOOS and $GOARCH to the desired system. For example, if + * you want to view documentation for freebsd/arm on linux/amd64, set $GOOS + * to freebsd and $GOARCH to arm. + * The primary use of syscall is inside other packages that provide a more + * portable interface to the system, such as "os", "time" and "net". Use + * those packages rather than this one if you can. + * For details of the functions and data types in this package consult + * the manuals for the appropriate operating system. + * These calls return err == nil to indicate success; otherwise + * err is an operating system error describing the failure. + * On most systems, that error has type syscall.Errno. + * + * Deprecated: this package is locked down. Callers should use the + * corresponding package in the golang.org/x/sys repository instead. + * That is also where updates required by new systems or versions + * should be applied. See https://golang.org/s/go1.4-syscall for more + * information. + */ +namespace syscall { + interface SysProcAttr { + chroot: string // Chroot. + credential?: Credential // Credential. + /** + * Ptrace tells the child to call ptrace(PTRACE_TRACEME). + * Call runtime.LockOSThread before starting a process with this set, + * and don't call UnlockOSThread until done with PtraceSyscall calls. + */ + ptrace: boolean + setsid: boolean // Create session. + /** + * Setpgid sets the process group ID of the child to Pgid, + * or, if Pgid == 0, to the new child's process ID. + */ + setpgid: boolean + /** + * Setctty sets the controlling terminal of the child to + * file descriptor Ctty. Ctty must be a descriptor number + * in the child process: an index into ProcAttr.Files. + * This is only meaningful if Setsid is true. + */ + setctty: boolean + noctty: boolean // Detach fd 0 from controlling terminal + ctty: number // Controlling TTY fd + /** + * Foreground places the child process group in the foreground. + * This implies Setpgid. The Ctty field must be set to + * the descriptor of the controlling TTY. + * Unlike Setctty, in this case Ctty must be a descriptor + * number in the parent process. + */ + foreground: boolean + pgid: number // Child's process group ID if Setpgid. + pdeathsig: Signal // Signal that the process will get when its parent dies (Linux and FreeBSD only) + cloneflags: number // Flags for clone calls (Linux only) + unshareflags: number // Flags for unshare calls (Linux only) + uidMappings: Array // User ID mappings for user namespaces. + gidMappings: Array // Group ID mappings for user namespaces. + /** + * GidMappingsEnableSetgroups enabling setgroups syscall. + * If false, then setgroups syscall will be disabled for the child process. + * This parameter is no-op if GidMappings == nil. Otherwise for unprivileged + * users this should be set to false for mappings work. + */ + gidMappingsEnableSetgroups: boolean + ambientCaps: Array // Ambient capabilities (Linux only) + } + // @ts-ignore + import errorspkg = errors + /** + * A RawConn is a raw network connection. + */ + interface RawConn { + /** + * Control invokes f on the underlying connection's file + * descriptor or handle. + * The file descriptor fd is guaranteed to remain valid while + * f executes but not after f returns. + */ + control(f: (fd: number) => void): void + /** + * Read invokes f on the underlying connection's file + * descriptor or handle; f is expected to try to read from the + * file descriptor. + * If f returns true, Read returns. Otherwise Read blocks + * waiting for the connection to be ready for reading and + * tries again repeatedly. + * The file descriptor is guaranteed to remain valid while f + * executes but not after f returns. + */ + read(f: (fd: number) => boolean): void + /** + * Write is like Read but for writing. + */ + write(f: (fd: number) => boolean): void + } + /** + * An Errno is an unsigned number describing an error condition. + * It implements the error interface. The zero Errno is by convention + * a non-error, so code to convert from Errno to error should use: + * ``` + * err = nil + * if errno != 0 { + * err = errno + * } + * ``` + * + * Errno values can be tested against error values from the os package + * using errors.Is. For example: + * + * ``` + * _, _, err := syscall.Syscall(...) + * if errors.Is(err, fs.ErrNotExist) ... + * ``` + */ + interface Errno extends Number{} + interface Errno { + error(): string + } + interface Errno { + is(target: Error): boolean + } + interface Errno { + temporary(): boolean + } + interface Errno { + timeout(): boolean + } +} + +/** + * Package time provides functionality for measuring and displaying time. + * + * The calendrical calculations always assume a Gregorian calendar, with + * no leap seconds. + * + * Monotonic Clocks + * + * Operating systems provide both a “wall clock,” which is subject to + * changes for clock synchronization, and a “monotonic clock,” which is + * not. The general rule is that the wall clock is for telling time and + * the monotonic clock is for measuring time. Rather than split the API, + * in this package the Time returned by time.Now contains both a wall + * clock reading and a monotonic clock reading; later time-telling + * operations use the wall clock reading, but later time-measuring + * operations, specifically comparisons and subtractions, use the + * monotonic clock reading. + * + * For example, this code always computes a positive elapsed time of + * approximately 20 milliseconds, even if the wall clock is changed during + * the operation being timed: + * + * ``` + * start := time.Now() + * ... operation that takes 20 milliseconds ... + * t := time.Now() + * elapsed := t.Sub(start) + * ``` + * + * Other idioms, such as time.Since(start), time.Until(deadline), and + * time.Now().Before(deadline), are similarly robust against wall clock + * resets. + * + * The rest of this section gives the precise details of how operations * use monotonic clocks, but understanding those details is not required * to use this package. * @@ -7063,193 +6998,6 @@ namespace time { } } -/** - * Package fs defines basic interfaces to a file system. - * A file system can be provided by the host operating system - * but also by other packages. - */ -namespace fs { - /** - * An FS provides access to a hierarchical file system. - * - * The FS interface is the minimum implementation required of the file system. - * A file system may implement additional interfaces, - * such as ReadFileFS, to provide additional or optimized functionality. - */ - interface FS { - /** - * Open opens the named file. - * - * When Open returns an error, it should be of type *PathError - * with the Op field set to "open", the Path field set to name, - * and the Err field describing the problem. - * - * Open should reject attempts to open names that do not satisfy - * ValidPath(name), returning a *PathError with Err set to - * ErrInvalid or ErrNotExist. - */ - open(name: string): File - } - /** - * A File provides access to a single file. - * The File interface is the minimum implementation required of the file. - * Directory files should also implement ReadDirFile. - * A file may implement io.ReaderAt or io.Seeker as optimizations. - */ - interface File { - stat(): FileInfo - read(_arg0: string): number - close(): void - } - /** - * A DirEntry is an entry read from a directory - * (using the ReadDir function or a ReadDirFile's ReadDir method). - */ - interface DirEntry { - /** - * Name returns the name of the file (or subdirectory) described by the entry. - * This name is only the final element of the path (the base name), not the entire path. - * For example, Name would return "hello.go" not "home/gopher/hello.go". - */ - name(): string - /** - * IsDir reports whether the entry describes a directory. - */ - isDir(): boolean - /** - * Type returns the type bits for the entry. - * The type bits are a subset of the usual FileMode bits, those returned by the FileMode.Type method. - */ - type(): FileMode - /** - * Info returns the FileInfo for the file or subdirectory described by the entry. - * The returned FileInfo may be from the time of the original directory read - * or from the time of the call to Info. If the file has been removed or renamed - * since the directory read, Info may return an error satisfying errors.Is(err, ErrNotExist). - * If the entry denotes a symbolic link, Info reports the information about the link itself, - * not the link's target. - */ - info(): FileInfo - } - /** - * A FileInfo describes a file and is returned by Stat. - */ - interface FileInfo { - name(): string // base name of the file - size(): number // length in bytes for regular files; system-dependent for others - mode(): FileMode // file mode bits - modTime(): time.Time // modification time - isDir(): boolean // abbreviation for Mode().IsDir() - sys(): any // underlying data source (can return nil) - } - /** - * A FileMode represents a file's mode and permission bits. - * The bits have the same definition on all systems, so that - * information about files can be moved from one system - * to another portably. Not all bits apply to all systems. - * The only required bit is ModeDir for directories. - */ - interface FileMode extends Number{} - interface FileMode { - string(): string - } - interface FileMode { - /** - * IsDir reports whether m describes a directory. - * That is, it tests for the ModeDir bit being set in m. - */ - isDir(): boolean - } - interface FileMode { - /** - * IsRegular reports whether m describes a regular file. - * That is, it tests that no mode type bits are set. - */ - isRegular(): boolean - } - interface FileMode { - /** - * Perm returns the Unix permission bits in m (m & ModePerm). - */ - perm(): FileMode - } - interface FileMode { - /** - * Type returns type bits in m (m & ModeType). - */ - type(): FileMode - } - /** - * PathError records an error and the operation and file path that caused it. - */ - interface PathError { - op: string - path: string - err: Error - } - interface PathError { - error(): string - } - interface PathError { - unwrap(): void - } - interface PathError { - /** - * Timeout reports whether this error represents a timeout. - */ - timeout(): boolean - } - /** - * WalkDirFunc is the type of the function called by WalkDir to visit - * each file or directory. - * - * The path argument contains the argument to WalkDir as a prefix. - * That is, if WalkDir is called with root argument "dir" and finds a file - * named "a" in that directory, the walk function will be called with - * argument "dir/a". - * - * The d argument is the fs.DirEntry for the named path. - * - * The error result returned by the function controls how WalkDir - * continues. If the function returns the special value SkipDir, WalkDir - * skips the current directory (path if d.IsDir() is true, otherwise - * path's parent directory). Otherwise, if the function returns a non-nil - * error, WalkDir stops entirely and returns that error. - * - * The err argument reports an error related to path, signaling that - * WalkDir will not walk into that directory. The function can decide how - * to handle that error; as described earlier, returning the error will - * cause WalkDir to stop walking the entire tree. - * - * WalkDir calls the function with a non-nil err argument in two cases. - * - * First, if the initial fs.Stat on the root directory fails, WalkDir - * calls the function with path set to root, d set to nil, and err set to - * the error from fs.Stat. - * - * Second, if a directory's ReadDir method fails, WalkDir calls the - * function with path set to the directory's path, d set to an - * fs.DirEntry describing the directory, and err set to the error from - * ReadDir. In this second case, the function is called twice with the - * path of the directory: the first call is before the directory read is - * attempted and has err set to nil, giving the function a chance to - * return SkipDir and avoid the ReadDir entirely. The second call is - * after a failed ReadDir and reports the error from ReadDir. - * (If ReadDir succeeds, there is no second call.) - * - * The differences between WalkDirFunc compared to filepath.WalkFunc are: - * - * ``` - * - The second argument has type fs.DirEntry instead of fs.FileInfo. - * - The function is called before reading a directory, to allow SkipDir - * to bypass the directory read entirely. - * - If a directory read fails, the function is called a second time - * for that directory to report the error. - * ``` - */ - interface WalkDirFunc {(path: string, d: DirEntry, err: Error): void } -} - /** * Package context defines the Context type, which carries deadlines, * cancellation signals, and other request-scoped values across API boundaries @@ -7407,2169 +7155,2414 @@ namespace context { } /** - * Package sql provides a generic interface around SQL (or SQL-like) - * databases. - * - * The sql package must be used in conjunction with a database driver. - * See https://golang.org/s/sqldrivers for a list of drivers. - * - * Drivers that do not support context cancellation will not return until - * after the query is completed. + * Package io provides basic interfaces to I/O primitives. + * Its primary job is to wrap existing implementations of such primitives, + * such as those in package os, into shared public interfaces that + * abstract the functionality, plus some other related primitives. * - * For usage examples, see the wiki page at - * https://golang.org/s/sqlwiki. + * Because these interfaces and primitives wrap lower-level operations with + * various implementations, unless otherwise informed clients should not + * assume they are safe for parallel execution. */ -namespace sql { +namespace io { /** - * TxOptions holds the transaction options to be used in DB.BeginTx. + * Reader is the interface that wraps the basic Read method. + * + * Read reads up to len(p) bytes into p. It returns the number of bytes + * read (0 <= n <= len(p)) and any error encountered. Even if Read + * returns n < len(p), it may use all of p as scratch space during the call. + * If some data is available but not len(p) bytes, Read conventionally + * returns what is available instead of waiting for more. + * + * When Read encounters an error or end-of-file condition after + * successfully reading n > 0 bytes, it returns the number of + * bytes read. It may return the (non-nil) error from the same call + * or return the error (and n == 0) from a subsequent call. + * An instance of this general case is that a Reader returning + * a non-zero number of bytes at the end of the input stream may + * return either err == EOF or err == nil. The next Read should + * return 0, EOF. + * + * Callers should always process the n > 0 bytes returned before + * considering the error err. Doing so correctly handles I/O errors + * that happen after reading some bytes and also both of the + * allowed EOF behaviors. + * + * Implementations of Read are discouraged from returning a + * zero byte count with a nil error, except when len(p) == 0. + * Callers should treat a return of 0 and nil as indicating that + * nothing happened; in particular it does not indicate EOF. + * + * Implementations must not retain p. */ - interface TxOptions { - /** - * Isolation is the transaction isolation level. - * If zero, the driver or database's default level is used. - */ - isolation: IsolationLevel - readOnly: boolean + interface Reader { + read(p: string): number } /** - * DB is a database handle representing a pool of zero or more - * underlying connections. It's safe for concurrent use by multiple - * goroutines. + * Writer is the interface that wraps the basic Write method. * - * The sql package creates and frees connections automatically; it - * also maintains a free pool of idle connections. If the database has - * a concept of per-connection state, such state can be reliably observed - * within a transaction (Tx) or connection (Conn). Once DB.Begin is called, the - * returned Tx is bound to a single connection. Once Commit or - * Rollback is called on the transaction, that transaction's - * connection is returned to DB's idle connection pool. The pool size - * can be controlled with SetMaxIdleConns. + * Write writes len(p) bytes from p to the underlying data stream. + * It returns the number of bytes written from p (0 <= n <= len(p)) + * and any error encountered that caused the write to stop early. + * Write must return a non-nil error if it returns n < len(p). + * Write must not modify the slice data, even temporarily. + * + * Implementations must not retain p. */ - interface DB { + interface Writer { + write(p: string): number } - interface DB { - /** - * PingContext verifies a connection to the database is still alive, - * establishing a connection if necessary. - */ - pingContext(ctx: context.Context): void + /** + * ReadSeekCloser is the interface that groups the basic Read, Seek and Close + * methods. + */ + interface ReadSeekCloser { } - interface DB { - /** - * Ping verifies a connection to the database is still alive, - * establishing a connection if necessary. - * - * Ping uses context.Background internally; to specify the context, use - * PingContext. - */ - ping(): void +} + +/** + * Package bytes implements functions for the manipulation of byte slices. + * It is analogous to the facilities of the strings package. + */ +namespace bytes { + /** + * A Reader implements the io.Reader, io.ReaderAt, io.WriterTo, io.Seeker, + * io.ByteScanner, and io.RuneScanner interfaces by reading from + * a byte slice. + * Unlike a Buffer, a Reader is read-only and supports seeking. + * The zero value for Reader operates like a Reader of an empty slice. + */ + interface Reader { } - interface DB { + interface Reader { /** - * Close closes the database and prevents new queries from starting. - * Close then waits for all queries that have started processing on the server - * to finish. - * - * It is rare to Close a DB, as the DB handle is meant to be - * long-lived and shared between many goroutines. + * Len returns the number of bytes of the unread portion of the + * slice. */ - close(): void + len(): number } - interface DB { + interface Reader { /** - * SetMaxIdleConns sets the maximum number of connections in the idle - * connection pool. - * - * If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, - * then the new MaxIdleConns will be reduced to match the MaxOpenConns limit. - * - * If n <= 0, no idle connections are retained. - * - * The default max idle connections is currently 2. This may change in - * a future release. + * Size returns the original length of the underlying byte slice. + * Size is the number of bytes available for reading via ReadAt. + * The returned value is always the same and is not affected by calls + * to any other method. */ - setMaxIdleConns(n: number): void + size(): number } - interface DB { + interface Reader { /** - * SetMaxOpenConns sets the maximum number of open connections to the database. - * - * If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than - * MaxIdleConns, then MaxIdleConns will be reduced to match the new - * MaxOpenConns limit. - * - * If n <= 0, then there is no limit on the number of open connections. - * The default is 0 (unlimited). + * Read implements the io.Reader interface. */ - setMaxOpenConns(n: number): void + read(b: string): number } - interface DB { + interface Reader { /** - * SetConnMaxLifetime sets the maximum amount of time a connection may be reused. - * - * Expired connections may be closed lazily before reuse. - * - * If d <= 0, connections are not closed due to a connection's age. + * ReadAt implements the io.ReaderAt interface. */ - setConnMaxLifetime(d: time.Duration): void + readAt(b: string, off: number): number } - interface DB { + interface Reader { /** - * SetConnMaxIdleTime sets the maximum amount of time a connection may be idle. - * - * Expired connections may be closed lazily before reuse. - * - * If d <= 0, connections are not closed due to a connection's idle time. + * ReadByte implements the io.ByteReader interface. */ - setConnMaxIdleTime(d: time.Duration): void + readByte(): string } - interface DB { + interface Reader { /** - * Stats returns database statistics. + * UnreadByte complements ReadByte in implementing the io.ByteScanner interface. */ - stats(): DBStats + unreadByte(): void } - interface DB { + interface Reader { /** - * PrepareContext creates a prepared statement for later queries or executions. - * Multiple queries or executions may be run concurrently from the - * returned statement. - * The caller must call the statement's Close method - * when the statement is no longer needed. - * - * The provided context is used for the preparation of the statement, not for the - * execution of the statement. + * ReadRune implements the io.RuneReader interface. */ - prepareContext(ctx: context.Context, query: string): (Stmt | undefined) + readRune(): [string, number] } - interface DB { + interface Reader { /** - * Prepare creates a prepared statement for later queries or executions. - * Multiple queries or executions may be run concurrently from the - * returned statement. - * The caller must call the statement's Close method - * when the statement is no longer needed. - * - * Prepare uses context.Background internally; to specify the context, use - * PrepareContext. + * UnreadRune complements ReadRune in implementing the io.RuneScanner interface. */ - prepare(query: string): (Stmt | undefined) + unreadRune(): void } - interface DB { + interface Reader { /** - * ExecContext executes a query without returning any rows. - * The args are for any placeholder parameters in the query. + * Seek implements the io.Seeker interface. */ - execContext(ctx: context.Context, query: string, ...args: any[]): Result + seek(offset: number, whence: number): number } - interface DB { + interface Reader { /** - * Exec executes a query without returning any rows. - * The args are for any placeholder parameters in the query. - * - * Exec uses context.Background internally; to specify the context, use - * ExecContext. + * WriteTo implements the io.WriterTo interface. */ - exec(query: string, ...args: any[]): Result + writeTo(w: io.Writer): number } - interface DB { + interface Reader { /** - * QueryContext executes a query that returns rows, typically a SELECT. - * The args are for any placeholder parameters in the query. + * Reset resets the Reader to be reading from b. */ - queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) + reset(b: string): void } - interface DB { +} + +/** + * Package fs defines basic interfaces to a file system. + * A file system can be provided by the host operating system + * but also by other packages. + */ +namespace fs { + /** + * An FS provides access to a hierarchical file system. + * + * The FS interface is the minimum implementation required of the file system. + * A file system may implement additional interfaces, + * such as ReadFileFS, to provide additional or optimized functionality. + */ + interface FS { /** - * Query executes a query that returns rows, typically a SELECT. - * The args are for any placeholder parameters in the query. + * Open opens the named file. * - * Query uses context.Background internally; to specify the context, use - * QueryContext. + * When Open returns an error, it should be of type *PathError + * with the Op field set to "open", the Path field set to name, + * and the Err field describing the problem. + * + * Open should reject attempts to open names that do not satisfy + * ValidPath(name), returning a *PathError with Err set to + * ErrInvalid or ErrNotExist. */ - query(query: string, ...args: any[]): (Rows | undefined) + open(name: string): File } - interface DB { - /** - * QueryRowContext executes a query that is expected to return at most one row. - * QueryRowContext always returns a non-nil value. Errors are deferred until - * Row's Scan method is called. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. - */ - queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) + /** + * A File provides access to a single file. + * The File interface is the minimum implementation required of the file. + * Directory files should also implement ReadDirFile. + * A file may implement io.ReaderAt or io.Seeker as optimizations. + */ + interface File { + stat(): FileInfo + read(_arg0: string): number + close(): void } - interface DB { + /** + * A DirEntry is an entry read from a directory + * (using the ReadDir function or a ReadDirFile's ReadDir method). + */ + interface DirEntry { /** - * QueryRow executes a query that is expected to return at most one row. - * QueryRow always returns a non-nil value. Errors are deferred until - * Row's Scan method is called. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. - * - * QueryRow uses context.Background internally; to specify the context, use - * QueryRowContext. + * Name returns the name of the file (or subdirectory) described by the entry. + * This name is only the final element of the path (the base name), not the entire path. + * For example, Name would return "hello.go" not "home/gopher/hello.go". */ - queryRow(query: string, ...args: any[]): (Row | undefined) - } - interface DB { + name(): string /** - * BeginTx starts a transaction. - * - * The provided context is used until the transaction is committed or rolled back. - * If the context is canceled, the sql package will roll back - * the transaction. Tx.Commit will return an error if the context provided to - * BeginTx is canceled. - * - * The provided TxOptions is optional and may be nil if defaults should be used. - * If a non-default isolation level is used that the driver doesn't support, - * an error will be returned. + * IsDir reports whether the entry describes a directory. */ - beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined) - } - interface DB { + isDir(): boolean /** - * Begin starts a transaction. The default isolation level is dependent on - * the driver. - * - * Begin uses context.Background internally; to specify the context, use - * BeginTx. + * Type returns the type bits for the entry. + * The type bits are a subset of the usual FileMode bits, those returned by the FileMode.Type method. */ - begin(): (Tx | undefined) - } - interface DB { + type(): FileMode /** - * Driver returns the database's underlying driver. + * Info returns the FileInfo for the file or subdirectory described by the entry. + * The returned FileInfo may be from the time of the original directory read + * or from the time of the call to Info. If the file has been removed or renamed + * since the directory read, Info may return an error satisfying errors.Is(err, ErrNotExist). + * If the entry denotes a symbolic link, Info reports the information about the link itself, + * not the link's target. */ - driver(): any + info(): FileInfo } - interface DB { - /** - * Conn returns a single connection by either opening a new connection - * or returning an existing connection from the connection pool. Conn will - * block until either a connection is returned or ctx is canceled. - * Queries run on the same Conn will be run in the same database session. - * - * Every Conn must be returned to the database pool after use by - * calling Conn.Close. - */ - conn(ctx: context.Context): (Conn | undefined) + /** + * A FileInfo describes a file and is returned by Stat. + */ + interface FileInfo { + name(): string // base name of the file + size(): number // length in bytes for regular files; system-dependent for others + mode(): FileMode // file mode bits + modTime(): time.Time // modification time + isDir(): boolean // abbreviation for Mode().IsDir() + sys(): any // underlying data source (can return nil) } /** - * Tx is an in-progress database transaction. - * - * A transaction must end with a call to Commit or Rollback. - * - * After a call to Commit or Rollback, all operations on the - * transaction fail with ErrTxDone. - * - * The statements prepared for a transaction by calling - * the transaction's Prepare or Stmt methods are closed - * by the call to Commit or Rollback. + * A FileMode represents a file's mode and permission bits. + * The bits have the same definition on all systems, so that + * information about files can be moved from one system + * to another portably. Not all bits apply to all systems. + * The only required bit is ModeDir for directories. */ - interface Tx { + interface FileMode extends Number{} + interface FileMode { + string(): string } - interface Tx { + interface FileMode { /** - * Commit commits the transaction. + * IsDir reports whether m describes a directory. + * That is, it tests for the ModeDir bit being set in m. */ - commit(): void + isDir(): boolean } - interface Tx { + interface FileMode { /** - * Rollback aborts the transaction. + * IsRegular reports whether m describes a regular file. + * That is, it tests that no mode type bits are set. */ - rollback(): void + isRegular(): boolean } - interface Tx { + interface FileMode { /** - * PrepareContext creates a prepared statement for use within a transaction. - * - * The returned statement operates within the transaction and will be closed - * when the transaction has been committed or rolled back. - * - * To use an existing prepared statement on this transaction, see Tx.Stmt. - * - * The provided context will be used for the preparation of the context, not - * for the execution of the returned statement. The returned statement - * will run in the transaction context. + * Perm returns the Unix permission bits in m (m & ModePerm). */ - prepareContext(ctx: context.Context, query: string): (Stmt | undefined) + perm(): FileMode } - interface Tx { + interface FileMode { /** - * Prepare creates a prepared statement for use within a transaction. - * - * The returned statement operates within the transaction and will be closed - * when the transaction has been committed or rolled back. - * - * To use an existing prepared statement on this transaction, see Tx.Stmt. - * - * Prepare uses context.Background internally; to specify the context, use - * PrepareContext. + * Type returns type bits in m (m & ModeType). */ - prepare(query: string): (Stmt | undefined) + type(): FileMode } - interface Tx { - /** - * StmtContext returns a transaction-specific prepared statement from - * an existing statement. - * - * Example: - * updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?") - * ... - * tx, err := db.Begin() - * ... - * res, err := tx.StmtContext(ctx, updateMoney).Exec(123.45, 98293203) - * - * The provided context is used for the preparation of the statement, not for the - * execution of the statement. - * - * The returned statement operates within the transaction and will be closed - * when the transaction has been committed or rolled back. - */ - stmtContext(ctx: context.Context, stmt: Stmt): (Stmt | undefined) + /** + * PathError records an error and the operation and file path that caused it. + */ + interface PathError { + op: string + path: string + err: Error } - interface Tx { + interface PathError { + error(): string + } + interface PathError { + unwrap(): void + } + interface PathError { /** - * Stmt returns a transaction-specific prepared statement from - * an existing statement. - * - * Example: - * updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?") - * ... - * tx, err := db.Begin() - * ... - * res, err := tx.Stmt(updateMoney).Exec(123.45, 98293203) - * - * The returned statement operates within the transaction and will be closed - * when the transaction has been committed or rolled back. - * - * Stmt uses context.Background internally; to specify the context, use - * StmtContext. + * Timeout reports whether this error represents a timeout. */ - stmt(stmt: Stmt): (Stmt | undefined) + timeout(): boolean } - interface Tx { + /** + * WalkDirFunc is the type of the function called by WalkDir to visit + * each file or directory. + * + * The path argument contains the argument to WalkDir as a prefix. + * That is, if WalkDir is called with root argument "dir" and finds a file + * named "a" in that directory, the walk function will be called with + * argument "dir/a". + * + * The d argument is the fs.DirEntry for the named path. + * + * The error result returned by the function controls how WalkDir + * continues. If the function returns the special value SkipDir, WalkDir + * skips the current directory (path if d.IsDir() is true, otherwise + * path's parent directory). Otherwise, if the function returns a non-nil + * error, WalkDir stops entirely and returns that error. + * + * The err argument reports an error related to path, signaling that + * WalkDir will not walk into that directory. The function can decide how + * to handle that error; as described earlier, returning the error will + * cause WalkDir to stop walking the entire tree. + * + * WalkDir calls the function with a non-nil err argument in two cases. + * + * First, if the initial fs.Stat on the root directory fails, WalkDir + * calls the function with path set to root, d set to nil, and err set to + * the error from fs.Stat. + * + * Second, if a directory's ReadDir method fails, WalkDir calls the + * function with path set to the directory's path, d set to an + * fs.DirEntry describing the directory, and err set to the error from + * ReadDir. In this second case, the function is called twice with the + * path of the directory: the first call is before the directory read is + * attempted and has err set to nil, giving the function a chance to + * return SkipDir and avoid the ReadDir entirely. The second call is + * after a failed ReadDir and reports the error from ReadDir. + * (If ReadDir succeeds, there is no second call.) + * + * The differences between WalkDirFunc compared to filepath.WalkFunc are: + * + * ``` + * - The second argument has type fs.DirEntry instead of fs.FileInfo. + * - The function is called before reading a directory, to allow SkipDir + * to bypass the directory read entirely. + * - If a directory read fails, the function is called a second time + * for that directory to report the error. + * ``` + */ + interface WalkDirFunc {(path: string, d: DirEntry, err: Error): void } +} + +/** + * Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html + * + * See README.md for more info. + */ +namespace jwt { + /** + * MapClaims is a claims type that uses the map[string]interface{} for JSON decoding. + * This is the default claims type if you don't supply one + */ + interface MapClaims extends _TygojaDict{} + interface MapClaims { /** - * ExecContext executes a query that doesn't return rows. - * For example: an INSERT and UPDATE. + * VerifyAudience Compares the aud claim against cmp. + * If required is false, this method will return true if the value matches or is unset */ - execContext(ctx: context.Context, query: string, ...args: any[]): Result + verifyAudience(cmp: string, req: boolean): boolean } - interface Tx { + interface MapClaims { /** - * Exec executes a query that doesn't return rows. - * For example: an INSERT and UPDATE. - * - * Exec uses context.Background internally; to specify the context, use - * ExecContext. + * VerifyExpiresAt compares the exp claim against cmp (cmp <= exp). + * If req is false, it will return true, if exp is unset. */ - exec(query: string, ...args: any[]): Result + verifyExpiresAt(cmp: number, req: boolean): boolean } - interface Tx { + interface MapClaims { /** - * QueryContext executes a query that returns rows, typically a SELECT. + * VerifyIssuedAt compares the exp claim against cmp (cmp >= iat). + * If req is false, it will return true, if iat is unset. */ - queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) + verifyIssuedAt(cmp: number, req: boolean): boolean } - interface Tx { + interface MapClaims { /** - * Query executes a query that returns rows, typically a SELECT. - * - * Query uses context.Background internally; to specify the context, use - * QueryContext. + * VerifyNotBefore compares the nbf claim against cmp (cmp >= nbf). + * If req is false, it will return true, if nbf is unset. */ - query(query: string, ...args: any[]): (Rows | undefined) + verifyNotBefore(cmp: number, req: boolean): boolean } - interface Tx { + interface MapClaims { /** - * QueryRowContext executes a query that is expected to return at most one row. - * QueryRowContext always returns a non-nil value. Errors are deferred until - * Row's Scan method is called. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. + * VerifyIssuer compares the iss claim against cmp. + * If required is false, this method will return true if the value matches or is unset */ - queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) + verifyIssuer(cmp: string, req: boolean): boolean } - interface Tx { + interface MapClaims { /** - * QueryRow executes a query that is expected to return at most one row. - * QueryRow always returns a non-nil value. Errors are deferred until - * Row's Scan method is called. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. - * - * QueryRow uses context.Background internally; to specify the context, use - * QueryRowContext. + * Valid validates time based claims "exp, iat, nbf". + * There is no accounting for clock skew. + * As well, if any of the above claims are not in the token, it will still + * be considered a valid claim. */ - queryRow(query: string, ...args: any[]): (Row | undefined) + valid(): void } - /** - * Stmt is a prepared statement. - * A Stmt is safe for concurrent use by multiple goroutines. - * - * If a Stmt is prepared on a Tx or Conn, it will be bound to a single - * underlying connection forever. If the Tx or Conn closes, the Stmt will - * become unusable and all operations will return an error. - * If a Stmt is prepared on a DB, it will remain usable for the lifetime of the - * DB. When the Stmt needs to execute on a new underlying connection, it will - * prepare itself on the new connection automatically. +} + +/** + * Package multipart implements MIME multipart parsing, as defined in RFC + * 2046. + * + * The implementation is sufficient for HTTP (RFC 2388) and the multipart + * bodies generated by popular browsers. + */ +namespace multipart { + /** + * A FileHeader describes a file part of a multipart request. */ - interface Stmt { + interface FileHeader { + filename: string + header: textproto.MIMEHeader + size: number } - interface Stmt { + interface FileHeader { /** - * ExecContext executes a prepared statement with the given arguments and - * returns a Result summarizing the effect of the statement. + * Open opens and returns the FileHeader's associated File. */ - execContext(ctx: context.Context, ...args: any[]): Result + open(): File } - interface Stmt { +} + +/** + * Package http provides HTTP client and server implementations. + * + * Get, Head, Post, and PostForm make HTTP (or HTTPS) requests: + * + * ``` + * resp, err := http.Get("http://example.com/") + * ... + * resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) + * ... + * resp, err := http.PostForm("http://example.com/form", + * url.Values{"key": {"Value"}, "id": {"123"}}) + * ``` + * + * The client must close the response body when finished with it: + * + * ``` + * resp, err := http.Get("http://example.com/") + * if err != nil { + * // handle error + * } + * defer resp.Body.Close() + * body, err := io.ReadAll(resp.Body) + * // ... + * ``` + * + * For control over HTTP client headers, redirect policy, and other + * settings, create a Client: + * + * ``` + * client := &http.Client{ + * CheckRedirect: redirectPolicyFunc, + * } + * + * resp, err := client.Get("http://example.com") + * // ... + * + * req, err := http.NewRequest("GET", "http://example.com", nil) + * // ... + * req.Header.Add("If-None-Match", `W/"wyzzy"`) + * resp, err := client.Do(req) + * // ... + * ``` + * + * For control over proxies, TLS configuration, keep-alives, + * compression, and other settings, create a Transport: + * + * ``` + * tr := &http.Transport{ + * MaxIdleConns: 10, + * IdleConnTimeout: 30 * time.Second, + * DisableCompression: true, + * } + * client := &http.Client{Transport: tr} + * resp, err := client.Get("https://example.com") + * ``` + * + * Clients and Transports are safe for concurrent use by multiple + * goroutines and for efficiency should only be created once and re-used. + * + * ListenAndServe starts an HTTP server with a given address and handler. + * The handler is usually nil, which means to use DefaultServeMux. + * Handle and HandleFunc add handlers to DefaultServeMux: + * + * ``` + * http.Handle("/foo", fooHandler) + * + * http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { + * fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) + * }) + * + * log.Fatal(http.ListenAndServe(":8080", nil)) + * ``` + * + * More control over the server's behavior is available by creating a + * custom Server: + * + * ``` + * s := &http.Server{ + * Addr: ":8080", + * Handler: myHandler, + * ReadTimeout: 10 * time.Second, + * WriteTimeout: 10 * time.Second, + * MaxHeaderBytes: 1 << 20, + * } + * log.Fatal(s.ListenAndServe()) + * ``` + * + * Starting with Go 1.6, the http package has transparent support for the + * HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2 + * can do so by setting Transport.TLSNextProto (for clients) or + * Server.TLSNextProto (for servers) to a non-nil, empty + * map. Alternatively, the following GODEBUG environment variables are + * currently supported: + * + * ``` + * GODEBUG=http2client=0 # disable HTTP/2 client support + * GODEBUG=http2server=0 # disable HTTP/2 server support + * GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs + * GODEBUG=http2debug=2 # ... even more verbose, with frame dumps + * ``` + * + * The GODEBUG variables are not covered by Go's API compatibility + * promise. Please report any issues before disabling HTTP/2 + * support: https://golang.org/s/http2bug + * + * The http package's Transport and Server both automatically enable + * HTTP/2 support for simple configurations. To enable HTTP/2 for more + * complex configurations, to use lower-level HTTP/2 features, or to use + * a newer version of Go's http2 package, import "golang.org/x/net/http2" + * directly and use its ConfigureTransport and/or ConfigureServer + * functions. Manually configuring HTTP/2 via the golang.org/x/net/http2 + * package takes precedence over the net/http package's built-in HTTP/2 + * support. + */ +namespace http { + // @ts-ignore + import mathrand = rand + // @ts-ignore + import urlpkg = url + /** + * A Request represents an HTTP request received by a server + * or to be sent by a client. + * + * The field semantics differ slightly between client and server + * usage. In addition to the notes on the fields below, see the + * documentation for Request.Write and RoundTripper. + */ + interface Request { /** - * Exec executes a prepared statement with the given arguments and - * returns a Result summarizing the effect of the statement. + * Method specifies the HTTP method (GET, POST, PUT, etc.). + * For client requests, an empty string means GET. * - * Exec uses context.Background internally; to specify the context, use - * ExecContext. - */ - exec(...args: any[]): Result - } - interface Stmt { - /** - * QueryContext executes a prepared query statement with the given arguments - * and returns the query results as a *Rows. + * Go's HTTP client does not support sending a request with + * the CONNECT method. See the documentation on Transport for + * details. */ - queryContext(ctx: context.Context, ...args: any[]): (Rows | undefined) - } - interface Stmt { + method: string /** - * Query executes a prepared query statement with the given arguments - * and returns the query results as a *Rows. + * URL specifies either the URI being requested (for server + * requests) or the URL to access (for client requests). * - * Query uses context.Background internally; to specify the context, use - * QueryContext. + * For server requests, the URL is parsed from the URI + * supplied on the Request-Line as stored in RequestURI. For + * most requests, fields other than Path and RawQuery will be + * empty. (See RFC 7230, Section 5.3) + * + * For client requests, the URL's Host specifies the server to + * connect to, while the Request's Host field optionally + * specifies the Host header value to send in the HTTP + * request. */ - query(...args: any[]): (Rows | undefined) - } - interface Stmt { + url?: url.URL /** - * QueryRowContext executes a prepared query statement with the given arguments. - * If an error occurs during the execution of the statement, that error will - * be returned by a call to Scan on the returned *Row, which is always non-nil. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. + * The protocol version for incoming server requests. + * + * For client requests, these fields are ignored. The HTTP + * client code always uses either HTTP/1.1 or HTTP/2. + * See the docs on Transport for details. */ - queryRowContext(ctx: context.Context, ...args: any[]): (Row | undefined) - } - interface Stmt { + proto: string // "HTTP/1.0" + protoMajor: number // 1 + protoMinor: number // 0 /** - * QueryRow executes a prepared query statement with the given arguments. - * If an error occurs during the execution of the statement, that error will - * be returned by a call to Scan on the returned *Row, which is always non-nil. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. + * Header contains the request header fields either received + * by the server or to be sent by the client. * - * Example usage: + * If a server received a request with header lines, * - * var name string - * err := nameByUseridStmt.QueryRow(id).Scan(&name) + * ``` + * Host: example.com + * accept-encoding: gzip, deflate + * Accept-Language: en-us + * fOO: Bar + * foo: two + * ``` * - * QueryRow uses context.Background internally; to specify the context, use - * QueryRowContext. - */ - queryRow(...args: any[]): (Row | undefined) - } - interface Stmt { - /** - * Close closes the statement. - */ - close(): void - } - /** - * Rows is the result of a query. Its cursor starts before the first row - * of the result set. Use Next to advance from row to row. - */ - interface Rows { - } - interface Rows { - /** - * Next prepares the next result row for reading with the Scan method. It - * returns true on success, or false if there is no next result row or an error - * happened while preparing it. Err should be consulted to distinguish between - * the two cases. + * then * - * Every call to Scan, even the first one, must be preceded by a call to Next. + * ``` + * Header = map[string][]string{ + * "Accept-Encoding": {"gzip, deflate"}, + * "Accept-Language": {"en-us"}, + * "Foo": {"Bar", "two"}, + * } + * ``` + * + * For incoming requests, the Host header is promoted to the + * Request.Host field and removed from the Header map. + * + * HTTP defines that header names are case-insensitive. The + * request parser implements this by using CanonicalHeaderKey, + * making the first character and any characters following a + * hyphen uppercase and the rest lowercase. + * + * For client requests, certain headers such as Content-Length + * and Connection are automatically written when needed and + * values in Header may be ignored. See the documentation + * for the Request.Write method. */ - next(): boolean - } - interface Rows { + header: Header /** - * NextResultSet prepares the next result set for reading. It reports whether - * there is further result sets, or false if there is no further result set - * or if there is an error advancing to it. The Err method should be consulted - * to distinguish between the two cases. + * Body is the request's body. * - * After calling NextResultSet, the Next method should always be called before - * scanning. If there are further result sets they may not have rows in the result - * set. + * For client requests, a nil body means the request has no + * body, such as a GET request. The HTTP Client's Transport + * is responsible for calling the Close method. + * + * For server requests, the Request Body is always non-nil + * but will return EOF immediately when no body is present. + * The Server will close the request body. The ServeHTTP + * Handler does not need to. + * + * Body must allow Read to be called concurrently with Close. + * In particular, calling Close should unblock a Read waiting + * for input. */ - nextResultSet(): boolean - } - interface Rows { + body: io.ReadCloser /** - * Err returns the error, if any, that was encountered during iteration. - * Err may be called after an explicit or implicit Close. + * GetBody defines an optional func to return a new copy of + * Body. It is used for client requests when a redirect requires + * reading the body more than once. Use of GetBody still + * requires setting Body. + * + * For server requests, it is unused. */ - err(): void - } - interface Rows { + getBody: () => io.ReadCloser /** - * Columns returns the column names. - * Columns returns an error if the rows are closed. + * ContentLength records the length of the associated content. + * The value -1 indicates that the length is unknown. + * Values >= 0 indicate that the given number of bytes may + * be read from Body. + * + * For client requests, a value of 0 with a non-nil Body is + * also treated as unknown. */ - columns(): Array - } - interface Rows { + contentLength: number /** - * ColumnTypes returns column information such as column type, length, - * and nullable. Some information may not be available from some drivers. + * TransferEncoding lists the transfer encodings from outermost to + * innermost. An empty list denotes the "identity" encoding. + * TransferEncoding can usually be ignored; chunked encoding is + * automatically added and removed as necessary when sending and + * receiving requests. */ - columnTypes(): Array<(ColumnType | undefined)> - } - interface Rows { + transferEncoding: Array /** - * Scan copies the columns in the current row into the values pointed - * at by dest. The number of values in dest must be the same as the - * number of columns in Rows. - * - * Scan converts columns read from the database into the following - * common Go types and special types provided by the sql package: - * - * ``` - * *string - * *[]byte - * *int, *int8, *int16, *int32, *int64 - * *uint, *uint8, *uint16, *uint32, *uint64 - * *bool - * *float32, *float64 - * *interface{} - * *RawBytes - * *Rows (cursor value) - * any type implementing Scanner (see Scanner docs) - * ``` - * - * In the most simple case, if the type of the value from the source - * column is an integer, bool or string type T and dest is of type *T, - * Scan simply assigns the value through the pointer. - * - * Scan also converts between string and numeric types, as long as no - * information would be lost. While Scan stringifies all numbers - * scanned from numeric database columns into *string, scans into - * numeric types are checked for overflow. For example, a float64 with - * value 300 or a string with value "300" can scan into a uint16, but - * not into a uint8, though float64(255) or "255" can scan into a - * uint8. One exception is that scans of some float64 numbers to - * strings may lose information when stringifying. In general, scan - * floating point columns into *float64. + * Close indicates whether to close the connection after + * replying to this request (for servers) or after sending this + * request and reading its response (for clients). * - * If a dest argument has type *[]byte, Scan saves in that argument a - * copy of the corresponding data. The copy is owned by the caller and - * can be modified and held indefinitely. The copy can be avoided by - * using an argument of type *RawBytes instead; see the documentation - * for RawBytes for restrictions on its use. + * For server requests, the HTTP server handles this automatically + * and this field is not needed by Handlers. * - * If an argument has type *interface{}, Scan copies the value - * provided by the underlying driver without conversion. When scanning - * from a source value of type []byte to *interface{}, a copy of the - * slice is made and the caller owns the result. + * For client requests, setting this field prevents re-use of + * TCP connections between requests to the same hosts, as if + * Transport.DisableKeepAlives were set. + */ + close: boolean + /** + * For server requests, Host specifies the host on which the + * URL is sought. For HTTP/1 (per RFC 7230, section 5.4), this + * is either the value of the "Host" header or the host name + * given in the URL itself. For HTTP/2, it is the value of the + * ":authority" pseudo-header field. + * It may be of the form "host:port". For international domain + * names, Host may be in Punycode or Unicode form. Use + * golang.org/x/net/idna to convert it to either format if + * needed. + * To prevent DNS rebinding attacks, server Handlers should + * validate that the Host header has a value for which the + * Handler considers itself authoritative. The included + * ServeMux supports patterns registered to particular host + * names and thus protects its registered Handlers. * - * Source values of type time.Time may be scanned into values of type - * *time.Time, *interface{}, *string, or *[]byte. When converting to - * the latter two, time.RFC3339Nano is used. + * For client requests, Host optionally overrides the Host + * header to send. If empty, the Request.Write method uses + * the value of URL.Host. Host may contain an international + * domain name. + */ + host: string + /** + * Form contains the parsed form data, including both the URL + * field's query parameters and the PATCH, POST, or PUT form data. + * This field is only available after ParseForm is called. + * The HTTP client ignores Form and uses Body instead. + */ + form: url.Values + /** + * PostForm contains the parsed form data from PATCH, POST + * or PUT body parameters. * - * Source values of type bool may be scanned into types *bool, - * *interface{}, *string, *[]byte, or *RawBytes. + * This field is only available after ParseForm is called. + * The HTTP client ignores PostForm and uses Body instead. + */ + postForm: url.Values + /** + * MultipartForm is the parsed multipart form, including file uploads. + * This field is only available after ParseMultipartForm is called. + * The HTTP client ignores MultipartForm and uses Body instead. + */ + multipartForm?: multipart.Form + /** + * Trailer specifies additional headers that are sent after the request + * body. * - * For scanning into *bool, the source may be true, false, 1, 0, or - * string inputs parseable by strconv.ParseBool. + * For server requests, the Trailer map initially contains only the + * trailer keys, with nil values. (The client declares which trailers it + * will later send.) While the handler is reading from Body, it must + * not reference Trailer. After reading from Body returns EOF, Trailer + * can be read again and will contain non-nil values, if they were sent + * by the client. * - * Scan can also convert a cursor returned from a query, such as - * "select cursor(select * from my_table) from dual", into a - * *Rows value that can itself be scanned from. The parent - * select query will close any cursor *Rows if the parent *Rows is closed. + * For client requests, Trailer must be initialized to a map containing + * the trailer keys to later send. The values may be nil or their final + * values. The ContentLength must be 0 or -1, to send a chunked request. + * After the HTTP request is sent the map values can be updated while + * the request body is read. Once the body returns EOF, the caller must + * not mutate Trailer. * - * If any of the first arguments implementing Scanner returns an error, - * that error will be wrapped in the returned error + * Few HTTP clients, servers, or proxies support HTTP trailers. */ - scan(...dest: any[]): void - } - interface Rows { + trailer: Header /** - * Close closes the Rows, preventing further enumeration. If Next is called - * and returns false and there are no further result sets, - * the Rows are closed automatically and it will suffice to check the - * result of Err. Close is idempotent and does not affect the result of Err. + * RemoteAddr allows HTTP servers and other software to record + * the network address that sent the request, usually for + * logging. This field is not filled in by ReadRequest and + * has no defined format. The HTTP server in this package + * sets RemoteAddr to an "IP:port" address before invoking a + * handler. + * This field is ignored by the HTTP client. */ - close(): void - } - /** - * A Result summarizes an executed SQL command. - */ - interface Result { + remoteAddr: string /** - * LastInsertId returns the integer generated by the database - * in response to a command. Typically this will be from an - * "auto increment" column when inserting a new row. Not all - * databases support this feature, and the syntax of such - * statements varies. + * RequestURI is the unmodified request-target of the + * Request-Line (RFC 7230, Section 3.1.1) as sent by the client + * to a server. Usually the URL field should be used instead. + * It is an error to set this field in an HTTP client request. */ - lastInsertId(): number + requestURI: string /** - * RowsAffected returns the number of rows affected by an - * update, insert, or delete. Not every database or database - * driver may support this. + * TLS allows HTTP servers and other software to record + * information about the TLS connection on which the request + * was received. This field is not filled in by ReadRequest. + * The HTTP server in this package sets the field for + * TLS-enabled connections before invoking a handler; + * otherwise it leaves the field nil. + * This field is ignored by the HTTP client. */ - rowsAffected(): number + tls?: any + /** + * Cancel is an optional channel whose closure indicates that the client + * request should be regarded as canceled. Not all implementations of + * RoundTripper may support Cancel. + * + * For server requests, this field is not applicable. + * + * Deprecated: Set the Request's context with NewRequestWithContext + * instead. If a Request's Cancel field and context are both + * set, it is undefined whether Cancel is respected. + */ + cancel: undefined + /** + * Response is the redirect response which caused this request + * to be created. This field is only populated during client + * redirects. + */ + response?: Response } -} - -/** - * Package bytes implements functions for the manipulation of byte slices. - * It is analogous to the facilities of the strings package. - */ -namespace bytes { - /** - * A Reader implements the io.Reader, io.ReaderAt, io.WriterTo, io.Seeker, - * io.ByteScanner, and io.RuneScanner interfaces by reading from - * a byte slice. - * Unlike a Buffer, a Reader is read-only and supports seeking. - * The zero value for Reader operates like a Reader of an empty slice. - */ - interface Reader { + interface Request { + /** + * Context returns the request's context. To change the context, use + * WithContext. + * + * The returned context is always non-nil; it defaults to the + * background context. + * + * For outgoing client requests, the context controls cancellation. + * + * For incoming server requests, the context is canceled when the + * client's connection closes, the request is canceled (with HTTP/2), + * or when the ServeHTTP method returns. + */ + context(): context.Context } - interface Reader { + interface Request { /** - * Len returns the number of bytes of the unread portion of the - * slice. + * WithContext returns a shallow copy of r with its context changed + * to ctx. The provided ctx must be non-nil. + * + * For outgoing client request, the context controls the entire + * lifetime of a request and its response: obtaining a connection, + * sending the request, and reading the response headers and body. + * + * To create a new request with a context, use NewRequestWithContext. + * To change the context of a request, such as an incoming request you + * want to modify before sending back out, use Request.Clone. Between + * those two uses, it's rare to need WithContext. */ - len(): number + withContext(ctx: context.Context): (Request | undefined) } - interface Reader { + interface Request { /** - * Size returns the original length of the underlying byte slice. - * Size is the number of bytes available for reading via ReadAt. - * The returned value is always the same and is not affected by calls - * to any other method. + * Clone returns a deep copy of r with its context changed to ctx. + * The provided ctx must be non-nil. + * + * For an outgoing client request, the context controls the entire + * lifetime of a request and its response: obtaining a connection, + * sending the request, and reading the response headers and body. */ - size(): number + clone(ctx: context.Context): (Request | undefined) } - interface Reader { + interface Request { /** - * Read implements the io.Reader interface. + * ProtoAtLeast reports whether the HTTP protocol used + * in the request is at least major.minor. */ - read(b: string): number + protoAtLeast(major: number): boolean } - interface Reader { + interface Request { /** - * ReadAt implements the io.ReaderAt interface. + * UserAgent returns the client's User-Agent, if sent in the request. */ - readAt(b: string, off: number): number + userAgent(): string } - interface Reader { + interface Request { /** - * ReadByte implements the io.ByteReader interface. + * Cookies parses and returns the HTTP cookies sent with the request. */ - readByte(): string + cookies(): Array<(Cookie | undefined)> } - interface Reader { + interface Request { /** - * UnreadByte complements ReadByte in implementing the io.ByteScanner interface. + * Cookie returns the named cookie provided in the request or + * ErrNoCookie if not found. + * If multiple cookies match the given name, only one cookie will + * be returned. */ - unreadByte(): void + cookie(name: string): (Cookie | undefined) } - interface Reader { + interface Request { /** - * ReadRune implements the io.RuneReader interface. + * AddCookie adds a cookie to the request. Per RFC 6265 section 5.4, + * AddCookie does not attach more than one Cookie header field. That + * means all cookies, if any, are written into the same line, + * separated by semicolon. + * AddCookie only sanitizes c's name and value, and does not sanitize + * a Cookie header already present in the request. */ - readRune(): [string, number] + addCookie(c: Cookie): void } - interface Reader { + interface Request { /** - * UnreadRune complements ReadRune in implementing the io.RuneScanner interface. + * Referer returns the referring URL, if sent in the request. + * + * Referer is misspelled as in the request itself, a mistake from the + * earliest days of HTTP. This value can also be fetched from the + * Header map as Header["Referer"]; the benefit of making it available + * as a method is that the compiler can diagnose programs that use the + * alternate (correct English) spelling req.Referrer() but cannot + * diagnose programs that use Header["Referrer"]. */ - unreadRune(): void + referer(): string } - interface Reader { + interface Request { /** - * Seek implements the io.Seeker interface. + * MultipartReader returns a MIME multipart reader if this is a + * multipart/form-data or a multipart/mixed POST request, else returns nil and an error. + * Use this function instead of ParseMultipartForm to + * process the request body as a stream. */ - seek(offset: number, whence: number): number + multipartReader(): (multipart.Reader | undefined) } - interface Reader { + interface Request { /** - * WriteTo implements the io.WriterTo interface. + * Write writes an HTTP/1.1 request, which is the header and body, in wire format. + * This method consults the following fields of the request: + * ``` + * Host + * URL + * Method (defaults to "GET") + * Header + * ContentLength + * TransferEncoding + * Body + * ``` + * + * If Body is present, Content-Length is <= 0 and TransferEncoding + * hasn't been set to "identity", Write adds "Transfer-Encoding: + * chunked" to the header. Body is closed after it is sent. */ - writeTo(w: io.Writer): number + write(w: io.Writer): void } - interface Reader { + interface Request { /** - * Reset resets the Reader to be reading from b. + * WriteProxy is like Write but writes the request in the form + * expected by an HTTP proxy. In particular, WriteProxy writes the + * initial Request-URI line of the request with an absolute URI, per + * section 5.3 of RFC 7230, including the scheme and host. + * In either case, WriteProxy also writes a Host header, using + * either r.Host or r.URL.Host. */ - reset(b: string): void + writeProxy(w: io.Writer): void } -} - -/** - * Package multipart implements MIME multipart parsing, as defined in RFC - * 2046. - * - * The implementation is sufficient for HTTP (RFC 2388) and the multipart - * bodies generated by popular browsers. - */ -namespace multipart { - /** - * A FileHeader describes a file part of a multipart request. - */ - interface FileHeader { - filename: string - header: textproto.MIMEHeader - size: number + interface Request { + /** + * BasicAuth returns the username and password provided in the request's + * Authorization header, if the request uses HTTP Basic Authentication. + * See RFC 2617, Section 2. + */ + basicAuth(): [string, boolean] } - interface FileHeader { + interface Request { /** - * Open opens and returns the FileHeader's associated File. + * SetBasicAuth sets the request's Authorization header to use HTTP + * Basic Authentication with the provided username and password. + * + * With HTTP Basic Authentication the provided username and password + * are not encrypted. + * + * Some protocols may impose additional requirements on pre-escaping the + * username and password. For instance, when used with OAuth2, both arguments + * must be URL encoded first with url.QueryEscape. */ - open(): File + setBasicAuth(username: string): void } -} - -/** - * Package http provides HTTP client and server implementations. - * - * Get, Head, Post, and PostForm make HTTP (or HTTPS) requests: - * - * ``` - * resp, err := http.Get("http://example.com/") - * ... - * resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) - * ... - * resp, err := http.PostForm("http://example.com/form", - * url.Values{"key": {"Value"}, "id": {"123"}}) - * ``` - * - * The client must close the response body when finished with it: - * - * ``` - * resp, err := http.Get("http://example.com/") - * if err != nil { - * // handle error - * } - * defer resp.Body.Close() - * body, err := io.ReadAll(resp.Body) - * // ... - * ``` - * - * For control over HTTP client headers, redirect policy, and other - * settings, create a Client: - * - * ``` - * client := &http.Client{ - * CheckRedirect: redirectPolicyFunc, - * } - * - * resp, err := client.Get("http://example.com") - * // ... - * - * req, err := http.NewRequest("GET", "http://example.com", nil) - * // ... - * req.Header.Add("If-None-Match", `W/"wyzzy"`) - * resp, err := client.Do(req) - * // ... - * ``` - * - * For control over proxies, TLS configuration, keep-alives, - * compression, and other settings, create a Transport: - * - * ``` - * tr := &http.Transport{ - * MaxIdleConns: 10, - * IdleConnTimeout: 30 * time.Second, - * DisableCompression: true, - * } - * client := &http.Client{Transport: tr} - * resp, err := client.Get("https://example.com") - * ``` - * - * Clients and Transports are safe for concurrent use by multiple - * goroutines and for efficiency should only be created once and re-used. - * - * ListenAndServe starts an HTTP server with a given address and handler. - * The handler is usually nil, which means to use DefaultServeMux. - * Handle and HandleFunc add handlers to DefaultServeMux: - * - * ``` - * http.Handle("/foo", fooHandler) - * - * http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { - * fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) - * }) - * - * log.Fatal(http.ListenAndServe(":8080", nil)) - * ``` - * - * More control over the server's behavior is available by creating a - * custom Server: - * - * ``` - * s := &http.Server{ - * Addr: ":8080", - * Handler: myHandler, - * ReadTimeout: 10 * time.Second, - * WriteTimeout: 10 * time.Second, - * MaxHeaderBytes: 1 << 20, - * } - * log.Fatal(s.ListenAndServe()) - * ``` - * - * Starting with Go 1.6, the http package has transparent support for the - * HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2 - * can do so by setting Transport.TLSNextProto (for clients) or - * Server.TLSNextProto (for servers) to a non-nil, empty - * map. Alternatively, the following GODEBUG environment variables are - * currently supported: - * - * ``` - * GODEBUG=http2client=0 # disable HTTP/2 client support - * GODEBUG=http2server=0 # disable HTTP/2 server support - * GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs - * GODEBUG=http2debug=2 # ... even more verbose, with frame dumps - * ``` - * - * The GODEBUG variables are not covered by Go's API compatibility - * promise. Please report any issues before disabling HTTP/2 - * support: https://golang.org/s/http2bug - * - * The http package's Transport and Server both automatically enable - * HTTP/2 support for simple configurations. To enable HTTP/2 for more - * complex configurations, to use lower-level HTTP/2 features, or to use - * a newer version of Go's http2 package, import "golang.org/x/net/http2" - * directly and use its ConfigureTransport and/or ConfigureServer - * functions. Manually configuring HTTP/2 via the golang.org/x/net/http2 - * package takes precedence over the net/http package's built-in HTTP/2 - * support. - */ -namespace http { - // @ts-ignore - import mathrand = rand - // @ts-ignore - import urlpkg = url - /** - * A Request represents an HTTP request received by a server - * or to be sent by a client. - * - * The field semantics differ slightly between client and server - * usage. In addition to the notes on the fields below, see the - * documentation for Request.Write and RoundTripper. - */ interface Request { /** - * Method specifies the HTTP method (GET, POST, PUT, etc.). - * For client requests, an empty string means GET. - * - * Go's HTTP client does not support sending a request with - * the CONNECT method. See the documentation on Transport for - * details. - */ - method: string - /** - * URL specifies either the URI being requested (for server - * requests) or the URL to access (for client requests). - * - * For server requests, the URL is parsed from the URI - * supplied on the Request-Line as stored in RequestURI. For - * most requests, fields other than Path and RawQuery will be - * empty. (See RFC 7230, Section 5.3) - * - * For client requests, the URL's Host specifies the server to - * connect to, while the Request's Host field optionally - * specifies the Host header value to send in the HTTP - * request. - */ - url?: url.URL - /** - * The protocol version for incoming server requests. - * - * For client requests, these fields are ignored. The HTTP - * client code always uses either HTTP/1.1 or HTTP/2. - * See the docs on Transport for details. - */ - proto: string // "HTTP/1.0" - protoMajor: number // 1 - protoMinor: number // 0 - /** - * Header contains the request header fields either received - * by the server or to be sent by the client. - * - * If a server received a request with header lines, - * - * ``` - * Host: example.com - * accept-encoding: gzip, deflate - * Accept-Language: en-us - * fOO: Bar - * foo: two - * ``` + * ParseForm populates r.Form and r.PostForm. * - * then + * For all requests, ParseForm parses the raw query from the URL and updates + * r.Form. * - * ``` - * Header = map[string][]string{ - * "Accept-Encoding": {"gzip, deflate"}, - * "Accept-Language": {"en-us"}, - * "Foo": {"Bar", "two"}, - * } - * ``` + * For POST, PUT, and PATCH requests, it also reads the request body, parses it + * as a form and puts the results into both r.PostForm and r.Form. Request body + * parameters take precedence over URL query string values in r.Form. * - * For incoming requests, the Host header is promoted to the - * Request.Host field and removed from the Header map. + * If the request Body's size has not already been limited by MaxBytesReader, + * the size is capped at 10MB. * - * HTTP defines that header names are case-insensitive. The - * request parser implements this by using CanonicalHeaderKey, - * making the first character and any characters following a - * hyphen uppercase and the rest lowercase. + * For other HTTP methods, or when the Content-Type is not + * application/x-www-form-urlencoded, the request Body is not read, and + * r.PostForm is initialized to a non-nil, empty value. * - * For client requests, certain headers such as Content-Length - * and Connection are automatically written when needed and - * values in Header may be ignored. See the documentation - * for the Request.Write method. + * ParseMultipartForm calls ParseForm automatically. + * ParseForm is idempotent. */ - header: Header + parseForm(): void + } + interface Request { /** - * Body is the request's body. - * - * For client requests, a nil body means the request has no - * body, such as a GET request. The HTTP Client's Transport - * is responsible for calling the Close method. - * - * For server requests, the Request Body is always non-nil - * but will return EOF immediately when no body is present. - * The Server will close the request body. The ServeHTTP - * Handler does not need to. - * - * Body must allow Read to be called concurrently with Close. - * In particular, calling Close should unblock a Read waiting - * for input. + * ParseMultipartForm parses a request body as multipart/form-data. + * The whole request body is parsed and up to a total of maxMemory bytes of + * its file parts are stored in memory, with the remainder stored on + * disk in temporary files. + * ParseMultipartForm calls ParseForm if necessary. + * If ParseForm returns an error, ParseMultipartForm returns it but also + * continues parsing the request body. + * After one call to ParseMultipartForm, subsequent calls have no effect. */ - body: io.ReadCloser + parseMultipartForm(maxMemory: number): void + } + interface Request { /** - * GetBody defines an optional func to return a new copy of - * Body. It is used for client requests when a redirect requires - * reading the body more than once. Use of GetBody still - * requires setting Body. - * - * For server requests, it is unused. + * FormValue returns the first value for the named component of the query. + * POST and PUT body parameters take precedence over URL query string values. + * FormValue calls ParseMultipartForm and ParseForm if necessary and ignores + * any errors returned by these functions. + * If key is not present, FormValue returns the empty string. + * To access multiple values of the same key, call ParseForm and + * then inspect Request.Form directly. */ - getBody: () => io.ReadCloser + formValue(key: string): string + } + interface Request { /** - * ContentLength records the length of the associated content. - * The value -1 indicates that the length is unknown. - * Values >= 0 indicate that the given number of bytes may - * be read from Body. - * - * For client requests, a value of 0 with a non-nil Body is - * also treated as unknown. + * PostFormValue returns the first value for the named component of the POST, + * PATCH, or PUT request body. URL query parameters are ignored. + * PostFormValue calls ParseMultipartForm and ParseForm if necessary and ignores + * any errors returned by these functions. + * If key is not present, PostFormValue returns the empty string. */ - contentLength: number + postFormValue(key: string): string + } + interface Request { /** - * TransferEncoding lists the transfer encodings from outermost to - * innermost. An empty list denotes the "identity" encoding. - * TransferEncoding can usually be ignored; chunked encoding is - * automatically added and removed as necessary when sending and - * receiving requests. + * FormFile returns the first file for the provided form key. + * FormFile calls ParseMultipartForm and ParseForm if necessary. */ - transferEncoding: Array + formFile(key: string): [multipart.File, (multipart.FileHeader | undefined)] + } + /** + * A ResponseWriter interface is used by an HTTP handler to + * construct an HTTP response. + * + * A ResponseWriter may not be used after the Handler.ServeHTTP method + * has returned. + */ + interface ResponseWriter { /** - * Close indicates whether to close the connection after - * replying to this request (for servers) or after sending this - * request and reading its response (for clients). + * Header returns the header map that will be sent by + * WriteHeader. The Header map also is the mechanism with which + * Handlers can set HTTP trailers. * - * For server requests, the HTTP server handles this automatically - * and this field is not needed by Handlers. + * Changing the header map after a call to WriteHeader (or + * Write) has no effect unless the modified headers are + * trailers. * - * For client requests, setting this field prevents re-use of - * TCP connections between requests to the same hosts, as if - * Transport.DisableKeepAlives were set. + * There are two ways to set Trailers. The preferred way is to + * predeclare in the headers which trailers you will later + * send by setting the "Trailer" header to the names of the + * trailer keys which will come later. In this case, those + * keys of the Header map are treated as if they were + * trailers. See the example. The second way, for trailer + * keys not known to the Handler until after the first Write, + * is to prefix the Header map keys with the TrailerPrefix + * constant value. See TrailerPrefix. + * + * To suppress automatic response headers (such as "Date"), set + * their value to nil. */ - close: boolean + header(): Header /** - * For server requests, Host specifies the host on which the - * URL is sought. For HTTP/1 (per RFC 7230, section 5.4), this - * is either the value of the "Host" header or the host name - * given in the URL itself. For HTTP/2, it is the value of the - * ":authority" pseudo-header field. - * It may be of the form "host:port". For international domain - * names, Host may be in Punycode or Unicode form. Use - * golang.org/x/net/idna to convert it to either format if - * needed. - * To prevent DNS rebinding attacks, server Handlers should - * validate that the Host header has a value for which the - * Handler considers itself authoritative. The included - * ServeMux supports patterns registered to particular host - * names and thus protects its registered Handlers. + * Write writes the data to the connection as part of an HTTP reply. * - * For client requests, Host optionally overrides the Host - * header to send. If empty, the Request.Write method uses - * the value of URL.Host. Host may contain an international - * domain name. + * If WriteHeader has not yet been called, Write calls + * WriteHeader(http.StatusOK) before writing the data. If the Header + * does not contain a Content-Type line, Write adds a Content-Type set + * to the result of passing the initial 512 bytes of written data to + * DetectContentType. Additionally, if the total size of all written + * data is under a few KB and there are no Flush calls, the + * Content-Length header is added automatically. + * + * Depending on the HTTP protocol version and the client, calling + * Write or WriteHeader may prevent future reads on the + * Request.Body. For HTTP/1.x requests, handlers should read any + * needed request body data before writing the response. Once the + * headers have been flushed (due to either an explicit Flusher.Flush + * call or writing enough data to trigger a flush), the request body + * may be unavailable. For HTTP/2 requests, the Go HTTP server permits + * handlers to continue to read the request body while concurrently + * writing the response. However, such behavior may not be supported + * by all HTTP/2 clients. Handlers should read before writing if + * possible to maximize compatibility. */ - host: string + write(_arg0: string): number /** - * Form contains the parsed form data, including both the URL - * field's query parameters and the PATCH, POST, or PUT form data. - * This field is only available after ParseForm is called. - * The HTTP client ignores Form and uses Body instead. + * WriteHeader sends an HTTP response header with the provided + * status code. + * + * If WriteHeader is not called explicitly, the first call to Write + * will trigger an implicit WriteHeader(http.StatusOK). + * Thus explicit calls to WriteHeader are mainly used to + * send error codes. + * + * The provided code must be a valid HTTP 1xx-5xx status code. + * Only one header may be written. Go does not currently + * support sending user-defined 1xx informational headers, + * with the exception of 100-continue response header that the + * Server sends automatically when the Request.Body is read. */ - form: url.Values + writeHeader(statusCode: number): void + } + /** + * A Server defines parameters for running an HTTP server. + * The zero value for Server is a valid configuration. + */ + interface Server { /** - * PostForm contains the parsed form data from PATCH, POST - * or PUT body parameters. - * - * This field is only available after ParseForm is called. - * The HTTP client ignores PostForm and uses Body instead. + * Addr optionally specifies the TCP address for the server to listen on, + * in the form "host:port". If empty, ":http" (port 80) is used. + * The service names are defined in RFC 6335 and assigned by IANA. + * See net.Dial for details of the address format. */ - postForm: url.Values + addr: string + handler: Handler // handler to invoke, http.DefaultServeMux if nil /** - * MultipartForm is the parsed multipart form, including file uploads. - * This field is only available after ParseMultipartForm is called. - * The HTTP client ignores MultipartForm and uses Body instead. + * TLSConfig optionally provides a TLS configuration for use + * by ServeTLS and ListenAndServeTLS. Note that this value is + * cloned by ServeTLS and ListenAndServeTLS, so it's not + * possible to modify the configuration with methods like + * tls.Config.SetSessionTicketKeys. To use + * SetSessionTicketKeys, use Server.Serve with a TLS Listener + * instead. */ - multipartForm?: multipart.Form + tlsConfig?: any /** - * Trailer specifies additional headers that are sent after the request - * body. - * - * For server requests, the Trailer map initially contains only the - * trailer keys, with nil values. (The client declares which trailers it - * will later send.) While the handler is reading from Body, it must - * not reference Trailer. After reading from Body returns EOF, Trailer - * can be read again and will contain non-nil values, if they were sent - * by the client. - * - * For client requests, Trailer must be initialized to a map containing - * the trailer keys to later send. The values may be nil or their final - * values. The ContentLength must be 0 or -1, to send a chunked request. - * After the HTTP request is sent the map values can be updated while - * the request body is read. Once the body returns EOF, the caller must - * not mutate Trailer. + * ReadTimeout is the maximum duration for reading the entire + * request, including the body. A zero or negative value means + * there will be no timeout. * - * Few HTTP clients, servers, or proxies support HTTP trailers. + * Because ReadTimeout does not let Handlers make per-request + * decisions on each request body's acceptable deadline or + * upload rate, most users will prefer to use + * ReadHeaderTimeout. It is valid to use them both. */ - trailer: Header + readTimeout: time.Duration /** - * RemoteAddr allows HTTP servers and other software to record - * the network address that sent the request, usually for - * logging. This field is not filled in by ReadRequest and - * has no defined format. The HTTP server in this package - * sets RemoteAddr to an "IP:port" address before invoking a - * handler. - * This field is ignored by the HTTP client. + * ReadHeaderTimeout is the amount of time allowed to read + * request headers. The connection's read deadline is reset + * after reading the headers and the Handler can decide what + * is considered too slow for the body. If ReadHeaderTimeout + * is zero, the value of ReadTimeout is used. If both are + * zero, there is no timeout. */ - remoteAddr: string + readHeaderTimeout: time.Duration /** - * RequestURI is the unmodified request-target of the - * Request-Line (RFC 7230, Section 3.1.1) as sent by the client - * to a server. Usually the URL field should be used instead. - * It is an error to set this field in an HTTP client request. + * WriteTimeout is the maximum duration before timing out + * writes of the response. It is reset whenever a new + * request's header is read. Like ReadTimeout, it does not + * let Handlers make decisions on a per-request basis. + * A zero or negative value means there will be no timeout. */ - requestURI: string + writeTimeout: time.Duration /** - * TLS allows HTTP servers and other software to record - * information about the TLS connection on which the request - * was received. This field is not filled in by ReadRequest. - * The HTTP server in this package sets the field for - * TLS-enabled connections before invoking a handler; - * otherwise it leaves the field nil. - * This field is ignored by the HTTP client. + * IdleTimeout is the maximum amount of time to wait for the + * next request when keep-alives are enabled. If IdleTimeout + * is zero, the value of ReadTimeout is used. If both are + * zero, there is no timeout. */ - tls?: any + idleTimeout: time.Duration /** - * Cancel is an optional channel whose closure indicates that the client - * request should be regarded as canceled. Not all implementations of - * RoundTripper may support Cancel. - * - * For server requests, this field is not applicable. - * - * Deprecated: Set the Request's context with NewRequestWithContext - * instead. If a Request's Cancel field and context are both - * set, it is undefined whether Cancel is respected. + * MaxHeaderBytes controls the maximum number of bytes the + * server will read parsing the request header's keys and + * values, including the request line. It does not limit the + * size of the request body. + * If zero, DefaultMaxHeaderBytes is used. */ - cancel: undefined + maxHeaderBytes: number /** - * Response is the redirect response which caused this request - * to be created. This field is only populated during client - * redirects. + * TLSNextProto optionally specifies a function to take over + * ownership of the provided TLS connection when an ALPN + * protocol upgrade has occurred. The map key is the protocol + * name negotiated. The Handler argument should be used to + * handle HTTP requests and will initialize the Request's TLS + * and RemoteAddr if not already set. The connection is + * automatically closed when the function returns. + * If TLSNextProto is not nil, HTTP/2 support is not enabled + * automatically. */ - response?: Response - } - interface Request { + tlsNextProto: _TygojaDict /** - * Context returns the request's context. To change the context, use - * WithContext. - * - * The returned context is always non-nil; it defaults to the - * background context. - * - * For outgoing client requests, the context controls cancellation. - * - * For incoming server requests, the context is canceled when the - * client's connection closes, the request is canceled (with HTTP/2), - * or when the ServeHTTP method returns. + * ConnState specifies an optional callback function that is + * called when a client connection changes state. See the + * ConnState type and associated constants for details. */ - context(): context.Context - } - interface Request { + connState: (_arg0: net.Conn, _arg1: ConnState) => void /** - * WithContext returns a shallow copy of r with its context changed - * to ctx. The provided ctx must be non-nil. - * - * For outgoing client request, the context controls the entire - * lifetime of a request and its response: obtaining a connection, - * sending the request, and reading the response headers and body. - * - * To create a new request with a context, use NewRequestWithContext. - * To change the context of a request, such as an incoming request you - * want to modify before sending back out, use Request.Clone. Between - * those two uses, it's rare to need WithContext. + * ErrorLog specifies an optional logger for errors accepting + * connections, unexpected behavior from handlers, and + * underlying FileSystem errors. + * If nil, logging is done via the log package's standard logger. */ - withContext(ctx: context.Context): (Request | undefined) - } - interface Request { + errorLog?: any /** - * Clone returns a deep copy of r with its context changed to ctx. - * The provided ctx must be non-nil. - * - * For an outgoing client request, the context controls the entire - * lifetime of a request and its response: obtaining a connection, - * sending the request, and reading the response headers and body. + * BaseContext optionally specifies a function that returns + * the base context for incoming requests on this server. + * The provided Listener is the specific Listener that's + * about to start accepting requests. + * If BaseContext is nil, the default is context.Background(). + * If non-nil, it must return a non-nil context. */ - clone(ctx: context.Context): (Request | undefined) - } - interface Request { + baseContext: (_arg0: net.Listener) => context.Context /** - * ProtoAtLeast reports whether the HTTP protocol used - * in the request is at least major.minor. - */ - protoAtLeast(major: number): boolean - } - interface Request { - /** - * UserAgent returns the client's User-Agent, if sent in the request. + * ConnContext optionally specifies a function that modifies + * the context used for a new connection c. The provided ctx + * is derived from the base context and has a ServerContextKey + * value. */ - userAgent(): string + connContext: (ctx: context.Context, c: net.Conn) => context.Context } - interface Request { + interface Server { /** - * Cookies parses and returns the HTTP cookies sent with the request. + * Close immediately closes all active net.Listeners and any + * connections in state StateNew, StateActive, or StateIdle. For a + * graceful shutdown, use Shutdown. + * + * Close does not attempt to close (and does not even know about) + * any hijacked connections, such as WebSockets. + * + * Close returns any error returned from closing the Server's + * underlying Listener(s). */ - cookies(): Array<(Cookie | undefined)> + close(): void } - interface Request { + interface Server { /** - * Cookie returns the named cookie provided in the request or - * ErrNoCookie if not found. - * If multiple cookies match the given name, only one cookie will - * be returned. + * Shutdown gracefully shuts down the server without interrupting any + * active connections. Shutdown works by first closing all open + * listeners, then closing all idle connections, and then waiting + * indefinitely for connections to return to idle and then shut down. + * If the provided context expires before the shutdown is complete, + * Shutdown returns the context's error, otherwise it returns any + * error returned from closing the Server's underlying Listener(s). + * + * When Shutdown is called, Serve, ListenAndServe, and + * ListenAndServeTLS immediately return ErrServerClosed. Make sure the + * program doesn't exit and waits instead for Shutdown to return. + * + * Shutdown does not attempt to close nor wait for hijacked + * connections such as WebSockets. The caller of Shutdown should + * separately notify such long-lived connections of shutdown and wait + * for them to close, if desired. See RegisterOnShutdown for a way to + * register shutdown notification functions. + * + * Once Shutdown has been called on a server, it may not be reused; + * future calls to methods such as Serve will return ErrServerClosed. */ - cookie(name: string): (Cookie | undefined) + shutdown(ctx: context.Context): void } - interface Request { + interface Server { /** - * AddCookie adds a cookie to the request. Per RFC 6265 section 5.4, - * AddCookie does not attach more than one Cookie header field. That - * means all cookies, if any, are written into the same line, - * separated by semicolon. - * AddCookie only sanitizes c's name and value, and does not sanitize - * a Cookie header already present in the request. + * RegisterOnShutdown registers a function to call on Shutdown. + * This can be used to gracefully shutdown connections that have + * undergone ALPN protocol upgrade or that have been hijacked. + * This function should start protocol-specific graceful shutdown, + * but should not wait for shutdown to complete. */ - addCookie(c: Cookie): void + registerOnShutdown(f: () => void): void } - interface Request { + interface Server { /** - * Referer returns the referring URL, if sent in the request. + * ListenAndServe listens on the TCP network address srv.Addr and then + * calls Serve to handle requests on incoming connections. + * Accepted connections are configured to enable TCP keep-alives. * - * Referer is misspelled as in the request itself, a mistake from the - * earliest days of HTTP. This value can also be fetched from the - * Header map as Header["Referer"]; the benefit of making it available - * as a method is that the compiler can diagnose programs that use the - * alternate (correct English) spelling req.Referrer() but cannot - * diagnose programs that use Header["Referrer"]. - */ - referer(): string - } - interface Request { - /** - * MultipartReader returns a MIME multipart reader if this is a - * multipart/form-data or a multipart/mixed POST request, else returns nil and an error. - * Use this function instead of ParseMultipartForm to - * process the request body as a stream. + * If srv.Addr is blank, ":http" is used. + * + * ListenAndServe always returns a non-nil error. After Shutdown or Close, + * the returned error is ErrServerClosed. */ - multipartReader(): (multipart.Reader | undefined) + listenAndServe(): void } - interface Request { + interface Server { /** - * Write writes an HTTP/1.1 request, which is the header and body, in wire format. - * This method consults the following fields of the request: - * ``` - * Host - * URL - * Method (defaults to "GET") - * Header - * ContentLength - * TransferEncoding - * Body - * ``` + * Serve accepts incoming connections on the Listener l, creating a + * new service goroutine for each. The service goroutines read requests and + * then call srv.Handler to reply to them. * - * If Body is present, Content-Length is <= 0 and TransferEncoding - * hasn't been set to "identity", Write adds "Transfer-Encoding: - * chunked" to the header. Body is closed after it is sent. + * HTTP/2 support is only enabled if the Listener returns *tls.Conn + * connections and they were configured with "h2" in the TLS + * Config.NextProtos. + * + * Serve always returns a non-nil error and closes l. + * After Shutdown or Close, the returned error is ErrServerClosed. */ - write(w: io.Writer): void + serve(l: net.Listener): void } - interface Request { + interface Server { /** - * WriteProxy is like Write but writes the request in the form - * expected by an HTTP proxy. In particular, WriteProxy writes the - * initial Request-URI line of the request with an absolute URI, per - * section 5.3 of RFC 7230, including the scheme and host. - * In either case, WriteProxy also writes a Host header, using - * either r.Host or r.URL.Host. + * ServeTLS accepts incoming connections on the Listener l, creating a + * new service goroutine for each. The service goroutines perform TLS + * setup and then read requests, calling srv.Handler to reply to them. + * + * Files containing a certificate and matching private key for the + * server must be provided if neither the Server's + * TLSConfig.Certificates nor TLSConfig.GetCertificate are populated. + * If the certificate is signed by a certificate authority, the + * certFile should be the concatenation of the server's certificate, + * any intermediates, and the CA's certificate. + * + * ServeTLS always returns a non-nil error. After Shutdown or Close, the + * returned error is ErrServerClosed. */ - writeProxy(w: io.Writer): void + serveTLS(l: net.Listener, certFile: string): void } - interface Request { + interface Server { /** - * BasicAuth returns the username and password provided in the request's - * Authorization header, if the request uses HTTP Basic Authentication. - * See RFC 2617, Section 2. + * SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled. + * By default, keep-alives are always enabled. Only very + * resource-constrained environments or servers in the process of + * shutting down should disable them. */ - basicAuth(): [string, boolean] + setKeepAlivesEnabled(v: boolean): void } - interface Request { + interface Server { /** - * SetBasicAuth sets the request's Authorization header to use HTTP - * Basic Authentication with the provided username and password. + * ListenAndServeTLS listens on the TCP network address srv.Addr and + * then calls ServeTLS to handle requests on incoming TLS connections. + * Accepted connections are configured to enable TCP keep-alives. * - * With HTTP Basic Authentication the provided username and password - * are not encrypted. + * Filenames containing a certificate and matching private key for the + * server must be provided if neither the Server's TLSConfig.Certificates + * nor TLSConfig.GetCertificate are populated. If the certificate is + * signed by a certificate authority, the certFile should be the + * concatenation of the server's certificate, any intermediates, and + * the CA's certificate. * - * Some protocols may impose additional requirements on pre-escaping the - * username and password. For instance, when used with OAuth2, both arguments - * must be URL encoded first with url.QueryEscape. + * If srv.Addr is blank, ":https" is used. + * + * ListenAndServeTLS always returns a non-nil error. After Shutdown or + * Close, the returned error is ErrServerClosed. */ - setBasicAuth(username: string): void + listenAndServeTLS(certFile: string): void } - interface Request { +} + +namespace auth { + /** + * AuthUser defines a standardized oauth2 user data structure. + */ + interface AuthUser { + id: string + name: string + username: string + email: string + avatarUrl: string + rawUser: _TygojaDict + accessToken: string + refreshToken: string + } + /** + * Provider defines a common interface for an OAuth2 client. + */ + interface Provider { /** - * ParseForm populates r.Form and r.PostForm. - * - * For all requests, ParseForm parses the raw query from the URL and updates - * r.Form. - * - * For POST, PUT, and PATCH requests, it also reads the request body, parses it - * as a form and puts the results into both r.PostForm and r.Form. Request body - * parameters take precedence over URL query string values in r.Form. - * - * If the request Body's size has not already been limited by MaxBytesReader, - * the size is capped at 10MB. - * - * For other HTTP methods, or when the Content-Type is not - * application/x-www-form-urlencoded, the request Body is not read, and - * r.PostForm is initialized to a non-nil, empty value. - * - * ParseMultipartForm calls ParseForm automatically. - * ParseForm is idempotent. + * Scopes returns the context associated with the provider (if any). */ - parseForm(): void - } - interface Request { + context(): context.Context /** - * ParseMultipartForm parses a request body as multipart/form-data. - * The whole request body is parsed and up to a total of maxMemory bytes of - * its file parts are stored in memory, with the remainder stored on - * disk in temporary files. - * ParseMultipartForm calls ParseForm if necessary. - * If ParseForm returns an error, ParseMultipartForm returns it but also - * continues parsing the request body. - * After one call to ParseMultipartForm, subsequent calls have no effect. + * SetContext assigns the specified context to the current provider. */ - parseMultipartForm(maxMemory: number): void - } - interface Request { + setContext(ctx: context.Context): void /** - * FormValue returns the first value for the named component of the query. - * POST and PUT body parameters take precedence over URL query string values. - * FormValue calls ParseMultipartForm and ParseForm if necessary and ignores - * any errors returned by these functions. - * If key is not present, FormValue returns the empty string. - * To access multiple values of the same key, call ParseForm and - * then inspect Request.Form directly. + * Scopes returns the provider access permissions that will be requested. */ - formValue(key: string): string - } - interface Request { + scopes(): Array /** - * PostFormValue returns the first value for the named component of the POST, - * PATCH, or PUT request body. URL query parameters are ignored. - * PostFormValue calls ParseMultipartForm and ParseForm if necessary and ignores - * any errors returned by these functions. - * If key is not present, PostFormValue returns the empty string. + * SetScopes sets the provider access permissions that will be requested later. */ - postFormValue(key: string): string - } - interface Request { - /** - * FormFile returns the first file for the provided form key. - * FormFile calls ParseMultipartForm and ParseForm if necessary. - */ - formFile(key: string): [multipart.File, (multipart.FileHeader | undefined)] - } - /** - * A ResponseWriter interface is used by an HTTP handler to - * construct an HTTP response. - * - * A ResponseWriter may not be used after the Handler.ServeHTTP method - * has returned. - */ - interface ResponseWriter { - /** - * Header returns the header map that will be sent by - * WriteHeader. The Header map also is the mechanism with which - * Handlers can set HTTP trailers. - * - * Changing the header map after a call to WriteHeader (or - * Write) has no effect unless the modified headers are - * trailers. - * - * There are two ways to set Trailers. The preferred way is to - * predeclare in the headers which trailers you will later - * send by setting the "Trailer" header to the names of the - * trailer keys which will come later. In this case, those - * keys of the Header map are treated as if they were - * trailers. See the example. The second way, for trailer - * keys not known to the Handler until after the first Write, - * is to prefix the Header map keys with the TrailerPrefix - * constant value. See TrailerPrefix. - * - * To suppress automatic response headers (such as "Date"), set - * their value to nil. - */ - header(): Header - /** - * Write writes the data to the connection as part of an HTTP reply. - * - * If WriteHeader has not yet been called, Write calls - * WriteHeader(http.StatusOK) before writing the data. If the Header - * does not contain a Content-Type line, Write adds a Content-Type set - * to the result of passing the initial 512 bytes of written data to - * DetectContentType. Additionally, if the total size of all written - * data is under a few KB and there are no Flush calls, the - * Content-Length header is added automatically. - * - * Depending on the HTTP protocol version and the client, calling - * Write or WriteHeader may prevent future reads on the - * Request.Body. For HTTP/1.x requests, handlers should read any - * needed request body data before writing the response. Once the - * headers have been flushed (due to either an explicit Flusher.Flush - * call or writing enough data to trigger a flush), the request body - * may be unavailable. For HTTP/2 requests, the Go HTTP server permits - * handlers to continue to read the request body while concurrently - * writing the response. However, such behavior may not be supported - * by all HTTP/2 clients. Handlers should read before writing if - * possible to maximize compatibility. - */ - write(_arg0: string): number + setScopes(scopes: Array): void /** - * WriteHeader sends an HTTP response header with the provided - * status code. - * - * If WriteHeader is not called explicitly, the first call to Write - * will trigger an implicit WriteHeader(http.StatusOK). - * Thus explicit calls to WriteHeader are mainly used to - * send error codes. - * - * The provided code must be a valid HTTP 1xx-5xx status code. - * Only one header may be written. Go does not currently - * support sending user-defined 1xx informational headers, - * with the exception of 100-continue response header that the - * Server sends automatically when the Request.Body is read. + * ClientId returns the provider client's app ID. */ - writeHeader(statusCode: number): void - } - /** - * A Server defines parameters for running an HTTP server. - * The zero value for Server is a valid configuration. - */ - interface Server { + clientId(): string /** - * Addr optionally specifies the TCP address for the server to listen on, - * in the form "host:port". If empty, ":http" (port 80) is used. - * The service names are defined in RFC 6335 and assigned by IANA. - * See net.Dial for details of the address format. + * SetClientId sets the provider client's ID. */ - addr: string - handler: Handler // handler to invoke, http.DefaultServeMux if nil + setClientId(clientId: string): void /** - * TLSConfig optionally provides a TLS configuration for use - * by ServeTLS and ListenAndServeTLS. Note that this value is - * cloned by ServeTLS and ListenAndServeTLS, so it's not - * possible to modify the configuration with methods like - * tls.Config.SetSessionTicketKeys. To use - * SetSessionTicketKeys, use Server.Serve with a TLS Listener - * instead. + * ClientSecret returns the provider client's app secret. */ - tlsConfig?: any + clientSecret(): string /** - * ReadTimeout is the maximum duration for reading the entire - * request, including the body. A zero or negative value means - * there will be no timeout. - * - * Because ReadTimeout does not let Handlers make per-request - * decisions on each request body's acceptable deadline or - * upload rate, most users will prefer to use - * ReadHeaderTimeout. It is valid to use them both. + * SetClientSecret sets the provider client's app secret. */ - readTimeout: time.Duration + setClientSecret(secret: string): void /** - * ReadHeaderTimeout is the amount of time allowed to read - * request headers. The connection's read deadline is reset - * after reading the headers and the Handler can decide what - * is considered too slow for the body. If ReadHeaderTimeout - * is zero, the value of ReadTimeout is used. If both are - * zero, there is no timeout. + * RedirectUrl returns the end address to redirect the user + * going through the OAuth flow. */ - readHeaderTimeout: time.Duration + redirectUrl(): string /** - * WriteTimeout is the maximum duration before timing out - * writes of the response. It is reset whenever a new - * request's header is read. Like ReadTimeout, it does not - * let Handlers make decisions on a per-request basis. - * A zero or negative value means there will be no timeout. + * SetRedirectUrl sets the provider's RedirectUrl. */ - writeTimeout: time.Duration + setRedirectUrl(url: string): void /** - * IdleTimeout is the maximum amount of time to wait for the - * next request when keep-alives are enabled. If IdleTimeout - * is zero, the value of ReadTimeout is used. If both are - * zero, there is no timeout. + * AuthUrl returns the provider's authorization service url. */ - idleTimeout: time.Duration + authUrl(): string /** - * MaxHeaderBytes controls the maximum number of bytes the - * server will read parsing the request header's keys and - * values, including the request line. It does not limit the - * size of the request body. - * If zero, DefaultMaxHeaderBytes is used. + * SetAuthUrl sets the provider's AuthUrl. */ - maxHeaderBytes: number + setAuthUrl(url: string): void /** - * TLSNextProto optionally specifies a function to take over - * ownership of the provided TLS connection when an ALPN - * protocol upgrade has occurred. The map key is the protocol - * name negotiated. The Handler argument should be used to - * handle HTTP requests and will initialize the Request's TLS - * and RemoteAddr if not already set. The connection is - * automatically closed when the function returns. - * If TLSNextProto is not nil, HTTP/2 support is not enabled - * automatically. + * TokenUrl returns the provider's token exchange service url. */ - tlsNextProto: _TygojaDict + tokenUrl(): string /** - * ConnState specifies an optional callback function that is - * called when a client connection changes state. See the - * ConnState type and associated constants for details. + * SetTokenUrl sets the provider's TokenUrl. */ - connState: (_arg0: net.Conn, _arg1: ConnState) => void + setTokenUrl(url: string): void /** - * ErrorLog specifies an optional logger for errors accepting - * connections, unexpected behavior from handlers, and - * underlying FileSystem errors. - * If nil, logging is done via the log package's standard logger. + * UserApiUrl returns the provider's user info api url. */ - errorLog?: any + userApiUrl(): string /** - * BaseContext optionally specifies a function that returns - * the base context for incoming requests on this server. - * The provided Listener is the specific Listener that's - * about to start accepting requests. - * If BaseContext is nil, the default is context.Background(). - * If non-nil, it must return a non-nil context. + * SetUserApiUrl sets the provider's UserApiUrl. */ - baseContext: (_arg0: net.Listener) => context.Context + setUserApiUrl(url: string): void /** - * ConnContext optionally specifies a function that modifies - * the context used for a new connection c. The provided ctx - * is derived from the base context and has a ServerContextKey - * value. + * Client returns an http client using the provided token. */ - connContext: (ctx: context.Context, c: net.Conn) => context.Context - } - interface Server { + client(token: oauth2.Token): (any | undefined) /** - * Close immediately closes all active net.Listeners and any - * connections in state StateNew, StateActive, or StateIdle. For a - * graceful shutdown, use Shutdown. - * - * Close does not attempt to close (and does not even know about) - * any hijacked connections, such as WebSockets. - * - * Close returns any error returned from closing the Server's - * underlying Listener(s). + * BuildAuthUrl returns a URL to the provider's consent page + * that asks for permissions for the required scopes explicitly. */ - close(): void - } - interface Server { + buildAuthUrl(state: string, ...opts: oauth2.AuthCodeOption[]): string /** - * Shutdown gracefully shuts down the server without interrupting any - * active connections. Shutdown works by first closing all open - * listeners, then closing all idle connections, and then waiting - * indefinitely for connections to return to idle and then shut down. - * If the provided context expires before the shutdown is complete, - * Shutdown returns the context's error, otherwise it returns any - * error returned from closing the Server's underlying Listener(s). - * - * When Shutdown is called, Serve, ListenAndServe, and - * ListenAndServeTLS immediately return ErrServerClosed. Make sure the - * program doesn't exit and waits instead for Shutdown to return. - * - * Shutdown does not attempt to close nor wait for hijacked - * connections such as WebSockets. The caller of Shutdown should - * separately notify such long-lived connections of shutdown and wait - * for them to close, if desired. See RegisterOnShutdown for a way to - * register shutdown notification functions. - * - * Once Shutdown has been called on a server, it may not be reused; - * future calls to methods such as Serve will return ErrServerClosed. + * FetchToken converts an authorization code to token. */ - shutdown(ctx: context.Context): void - } - interface Server { + fetchToken(code: string, ...opts: oauth2.AuthCodeOption[]): (oauth2.Token | undefined) /** - * RegisterOnShutdown registers a function to call on Shutdown. - * This can be used to gracefully shutdown connections that have - * undergone ALPN protocol upgrade or that have been hijacked. - * This function should start protocol-specific graceful shutdown, - * but should not wait for shutdown to complete. + * FetchRawUserData requests and marshalizes into `result` the + * the OAuth user api response. */ - registerOnShutdown(f: () => void): void - } - interface Server { + fetchRawUserData(token: oauth2.Token): string /** - * ListenAndServe listens on the TCP network address srv.Addr and then - * calls Serve to handle requests on incoming connections. - * Accepted connections are configured to enable TCP keep-alives. - * - * If srv.Addr is blank, ":http" is used. - * - * ListenAndServe always returns a non-nil error. After Shutdown or Close, - * the returned error is ErrServerClosed. + * FetchAuthUser is similar to FetchRawUserData, but normalizes and + * marshalizes the user api response into a standardized AuthUser struct. */ - listenAndServe(): void - } - interface Server { - /** - * Serve accepts incoming connections on the Listener l, creating a - * new service goroutine for each. The service goroutines read requests and - * then call srv.Handler to reply to them. - * - * HTTP/2 support is only enabled if the Listener returns *tls.Conn - * connections and they were configured with "h2" in the TLS - * Config.NextProtos. - * - * Serve always returns a non-nil error and closes l. - * After Shutdown or Close, the returned error is ErrServerClosed. - */ - serve(l: net.Listener): void - } - interface Server { - /** - * ServeTLS accepts incoming connections on the Listener l, creating a - * new service goroutine for each. The service goroutines perform TLS - * setup and then read requests, calling srv.Handler to reply to them. - * - * Files containing a certificate and matching private key for the - * server must be provided if neither the Server's - * TLSConfig.Certificates nor TLSConfig.GetCertificate are populated. - * If the certificate is signed by a certificate authority, the - * certFile should be the concatenation of the server's certificate, - * any intermediates, and the CA's certificate. - * - * ServeTLS always returns a non-nil error. After Shutdown or Close, the - * returned error is ErrServerClosed. - */ - serveTLS(l: net.Listener, certFile: string): void - } - interface Server { - /** - * SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled. - * By default, keep-alives are always enabled. Only very - * resource-constrained environments or servers in the process of - * shutting down should disable them. - */ - setKeepAlivesEnabled(v: boolean): void - } - interface Server { - /** - * ListenAndServeTLS listens on the TCP network address srv.Addr and - * then calls ServeTLS to handle requests on incoming TLS connections. - * Accepted connections are configured to enable TCP keep-alives. - * - * Filenames containing a certificate and matching private key for the - * server must be provided if neither the Server's TLSConfig.Certificates - * nor TLSConfig.GetCertificate are populated. If the certificate is - * signed by a certificate authority, the certFile should be the - * concatenation of the server's certificate, any intermediates, and - * the CA's certificate. - * - * If srv.Addr is blank, ":https" is used. - * - * ListenAndServeTLS always returns a non-nil error. After Shutdown or - * Close, the returned error is ErrServerClosed. - */ - listenAndServeTLS(certFile: string): void + fetchAuthUser(token: oauth2.Token): (AuthUser | undefined) } } /** - * Package echo implements high performance, minimalist Go web framework. + * Package blob provides an easy and portable way to interact with blobs + * within a storage location. Subpackages contain driver implementations of + * blob for supported services. * - * Example: + * See https://gocloud.dev/howto/blob/ for a detailed how-to guide. * - * ``` - * package main + * *blob.Bucket implements io/fs.FS and io/fs.SubFS, so it can be used with + * functions in that package. * - * import ( - * "github.com/labstack/echo/v5" - * "github.com/labstack/echo/v5/middleware" - * "log" - * "net/http" - * ) + * # Errors * - * // Handler - * func hello(c echo.Context) error { - * return c.String(http.StatusOK, "Hello, World!") - * } + * The errors returned from this package can be inspected in several ways: * - * func main() { - * // Echo instance - * e := echo.New() + * The Code function from gocloud.dev/gcerrors will return an error code, also + * defined in that package, when invoked on an error. * - * // Middleware - * e.Use(middleware.Logger()) - * e.Use(middleware.Recover()) + * The Bucket.ErrorAs method can retrieve the driver error underlying the returned + * error. * - * // Routes - * e.GET("/", hello) + * # OpenCensus Integration * - * // Start server - * if err := e.Start(":8080"); err != http.ErrServerClosed { - * log.Fatal(err) - * } - * } + * OpenCensus supports tracing and metric collection for multiple languages and + * backend providers. See https://opencensus.io. + * + * This API collects OpenCensus traces and metrics for the following methods: + * ``` + * - Attributes + * - Copy + * - Delete + * - ListPage + * - NewRangeReader, from creation until the call to Close. (NewReader and ReadAll + * are included because they call NewRangeReader.) + * - NewWriter, from creation until the call to Close. * ``` * - * Learn more at https://echo.labstack.com + * All trace and metric names begin with the package import path. + * The traces add the method name. + * For example, "gocloud.dev/blob/Attributes". + * The metrics are "completed_calls", a count of completed method calls by driver, + * method and status (error code); and "latency", a distribution of method latency + * by driver and method. + * For example, "gocloud.dev/blob/latency". + * + * It also collects the following metrics: + * ``` + * - gocloud.dev/blob/bytes_read: the total number of bytes read, by driver. + * - gocloud.dev/blob/bytes_written: the total number of bytes written, by driver. + * ``` + * + * To enable trace collection in your application, see "Configure Exporter" at + * https://opencensus.io/quickstart/go/tracing. + * To enable metric collection in your application, see "Exporting stats" at + * https://opencensus.io/quickstart/go/metrics. */ -namespace echo { +namespace blob { /** - * Context represents the context of the current HTTP request. It holds request and - * response objects, path, path parameters, data and registered handler. + * Reader reads bytes from a blob. + * It implements io.ReadSeekCloser, and must be closed after + * reads are finished. */ - interface Context { + interface Reader { + } + interface Reader { /** - * Request returns `*http.Request`. + * Read implements io.Reader (https://golang.org/pkg/io/#Reader). */ - request(): (http.Request | undefined) + read(p: string): number + } + interface Reader { /** - * SetRequest sets `*http.Request`. + * Seek implements io.Seeker (https://golang.org/pkg/io/#Seeker). */ - setRequest(r: http.Request): void + seek(offset: number, whence: number): number + } + interface Reader { /** - * SetResponse sets `*Response`. + * Close implements io.Closer (https://golang.org/pkg/io/#Closer). */ - setResponse(r: Response): void + close(): void + } + interface Reader { /** - * Response returns `*Response`. + * ContentType returns the MIME type of the blob. */ - response(): (Response | undefined) + contentType(): string + } + interface Reader { /** - * IsTLS returns true if HTTP connection is TLS otherwise false. + * ModTime returns the time the blob was last modified. */ - isTLS(): boolean + modTime(): time.Time + } + interface Reader { /** - * IsWebSocket returns true if HTTP connection is WebSocket otherwise false. + * Size returns the size of the blob content in bytes. */ - isWebSocket(): boolean + size(): number + } + interface Reader { /** - * Scheme returns the HTTP protocol scheme, `http` or `https`. + * As converts i to driver-specific types. + * See https://gocloud.dev/concepts/as/ for background information, the "As" + * examples in this package for examples, and the driver package + * documentation for the specific types supported for that driver. */ - scheme(): string + as(i: { + }): boolean + } + interface Reader { /** - * RealIP returns the client's network address based on `X-Forwarded-For` - * or `X-Real-IP` request header. - * The behavior can be configured using `Echo#IPExtractor`. + * WriteTo reads from r and writes to w until there's no more data or + * an error occurs. + * The return value is the number of bytes written to w. + * + * It implements the io.WriterTo interface. */ - realIP(): string + writeTo(w: io.Writer): number + } + /** + * Attributes contains attributes about a blob. + */ + interface Attributes { /** - * RouteInfo returns current request route information. Method, Path, Name and params if they exist for matched route. - * In case of 404 (route not found) and 405 (method not allowed) RouteInfo returns generic struct for these cases. + * CacheControl specifies caching attributes that services may use + * when serving the blob. + * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control */ - routeInfo(): RouteInfo + cacheControl: string /** - * Path returns the registered path for the handler. + * ContentDisposition specifies whether the blob content is expected to be + * displayed inline or as an attachment. + * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition */ - path(): string + contentDisposition: string /** - * PathParam returns path parameter by name. + * ContentEncoding specifies the encoding used for the blob's content, if any. + * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding */ - pathParam(name: string): string + contentEncoding: string /** - * PathParamDefault returns the path parameter or default value for the provided name. - * - * Notes for DefaultRouter implementation: - * Path parameter could be empty for cases like that: - * * route `/release-:version/bin` and request URL is `/release-/bin` - * * route `/api/:version/image.jpg` and request URL is `/api//image.jpg` - * but not when path parameter is last part of route path - * * route `/download/file.:ext` will not match request `/download/file.` + * ContentLanguage specifies the language used in the blob's content, if any. + * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language */ - pathParamDefault(name: string, defaultValue: string): string + contentLanguage: string /** - * PathParams returns path parameter values. + * ContentType is the MIME type of the blob. It will not be empty. + * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type */ - pathParams(): PathParams + contentType: string /** - * SetPathParams sets path parameters for current request. + * Metadata holds key/value pairs associated with the blob. + * Keys are guaranteed to be in lowercase, even if the backend service + * has case-sensitive keys (although note that Metadata written via + * this package will always be lowercased). If there are duplicate + * case-insensitive keys (e.g., "foo" and "FOO"), only one value + * will be kept, and it is undefined which one. */ - setPathParams(params: PathParams): void + metadata: _TygojaDict /** - * QueryParam returns the query param for the provided name. + * CreateTime is the time the blob was created, if available. If not available, + * CreateTime will be the zero time. */ - queryParam(name: string): string + createTime: time.Time /** - * QueryParamDefault returns the query param or default value for the provided name. + * ModTime is the time the blob was last modified. */ - queryParamDefault(name: string): string - /** - * QueryParams returns the query parameters as `url.Values`. - */ - queryParams(): url.Values + modTime: time.Time /** - * QueryString returns the URL query string. + * Size is the size of the blob's content in bytes. */ - queryString(): string + size: number /** - * FormValue returns the form field value for the provided name. + * MD5 is an MD5 hash of the blob contents or nil if not available. */ - formValue(name: string): string + md5: string /** - * FormValueDefault returns the form field value or default value for the provided name. + * ETag for the blob; see https://en.wikipedia.org/wiki/HTTP_ETag. */ - formValueDefault(name: string): string + eTag: string + } + interface Attributes { /** - * FormValues returns the form field values as `url.Values`. + * As converts i to driver-specific types. + * See https://gocloud.dev/concepts/as/ for background information, the "As" + * examples in this package for examples, and the driver package + * documentation for the specific types supported for that driver. */ - formValues(): url.Values + as(i: { + }): boolean + } + /** + * ListObject represents a single blob returned from List. + */ + interface ListObject { /** - * FormFile returns the multipart form file for the provided name. + * Key is the key for this blob. */ - formFile(name: string): (multipart.FileHeader | undefined) + key: string /** - * MultipartForm returns the multipart form. + * ModTime is the time the blob was last modified. */ - multipartForm(): (multipart.Form | undefined) + modTime: time.Time /** - * Cookie returns the named cookie provided in the request. + * Size is the size of the blob's content in bytes. */ - cookie(name: string): (http.Cookie | undefined) + size: number /** - * SetCookie adds a `Set-Cookie` header in HTTP response. + * MD5 is an MD5 hash of the blob contents or nil if not available. */ - setCookie(cookie: http.Cookie): void + md5: string /** - * Cookies returns the HTTP cookies sent with the request. + * IsDir indicates that this result represents a "directory" in the + * hierarchical namespace, ending in ListOptions.Delimiter. Key can be + * passed as ListOptions.Prefix to list items in the "directory". + * Fields other than Key and IsDir will not be set if IsDir is true. */ - cookies(): Array<(http.Cookie | undefined)> + isDir: boolean + } + interface ListObject { /** - * Get retrieves data from the context. + * As converts i to driver-specific types. + * See https://gocloud.dev/concepts/as/ for background information, the "As" + * examples in this package for examples, and the driver package + * documentation for the specific types supported for that driver. */ - get(key: string): { + as(i: { + }): boolean } +} + +/** + * Package exec runs external commands. It wraps os.StartProcess to make it + * easier to remap stdin and stdout, connect I/O with pipes, and do other + * adjustments. + * + * Unlike the "system" library call from C and other languages, the + * os/exec package intentionally does not invoke the system shell and + * does not expand any glob patterns or handle other expansions, + * pipelines, or redirections typically done by shells. The package + * behaves more like C's "exec" family of functions. To expand glob + * patterns, either call the shell directly, taking care to escape any + * dangerous input, or use the path/filepath package's Glob function. + * To expand environment variables, use package os's ExpandEnv. + * + * Note that the examples in this package assume a Unix system. + * They may not run on Windows, and they do not run in the Go Playground + * used by golang.org and godoc.org. + */ +namespace exec { + /** + * Cmd represents an external command being prepared or run. + * + * A Cmd cannot be reused after calling its Run, Output or CombinedOutput + * methods. + */ + interface Cmd { /** - * Set saves data in the context. + * Path is the path of the command to run. + * + * This is the only field that must be set to a non-zero + * value. If Path is relative, it is evaluated relative + * to Dir. */ - set(key: string, val: { - }): void + path: string /** - * Bind binds path params, query params and the request body into provided type `i`. The default binder - * binds body based on Content-Type header. + * Args holds command line arguments, including the command as Args[0]. + * If the Args field is empty or nil, Run uses {Path}. + * + * In typical use, both Path and Args are set by calling Command. */ - bind(i: { - }): void + args: Array /** - * Validate validates provided `i`. It is usually called after `Context#Bind()`. - * Validator must be registered using `Echo#Validator`. + * Env specifies the environment of the process. + * Each entry is of the form "key=value". + * If Env is nil, the new process uses the current process's + * environment. + * If Env contains duplicate environment keys, only the last + * value in the slice for each duplicate key is used. + * As a special case on Windows, SYSTEMROOT is always added if + * missing and not explicitly set to the empty string. */ - validate(i: { - }): void + env: Array /** - * Render renders a template with data and sends a text/html response with status - * code. Renderer must be registered using `Echo.Renderer`. + * Dir specifies the working directory of the command. + * If Dir is the empty string, Run runs the command in the + * calling process's current directory. */ - render(code: number, name: string, data: { - }): void + dir: string /** - * HTML sends an HTTP response with status code. + * Stdin specifies the process's standard input. + * + * If Stdin is nil, the process reads from the null device (os.DevNull). + * + * If Stdin is an *os.File, the process's standard input is connected + * directly to that file. + * + * Otherwise, during the execution of the command a separate + * goroutine reads from Stdin and delivers that data to the command + * over a pipe. In this case, Wait does not complete until the goroutine + * stops copying, either because it has reached the end of Stdin + * (EOF or a read error) or because writing to the pipe returned an error. */ - html(code: number, html: string): void + stdin: io.Reader /** - * HTMLBlob sends an HTTP blob response with status code. + * Stdout and Stderr specify the process's standard output and error. + * + * If either is nil, Run connects the corresponding file descriptor + * to the null device (os.DevNull). + * + * If either is an *os.File, the corresponding output from the process + * is connected directly to that file. + * + * Otherwise, during the execution of the command a separate goroutine + * reads from the process over a pipe and delivers that data to the + * corresponding Writer. In this case, Wait does not complete until the + * goroutine reaches EOF or encounters an error. + * + * If Stdout and Stderr are the same writer, and have a type that can + * be compared with ==, at most one goroutine at a time will call Write. */ - htmlBlob(code: number, b: string): void + stdout: io.Writer + stderr: io.Writer /** - * String sends a string response with status code. + * ExtraFiles specifies additional open files to be inherited by the + * new process. It does not include standard input, standard output, or + * standard error. If non-nil, entry i becomes file descriptor 3+i. + * + * ExtraFiles is not supported on Windows. */ - string(code: number, s: string): void + extraFiles: Array<(os.File | undefined)> /** - * JSON sends a JSON response with status code. + * SysProcAttr holds optional, operating system-specific attributes. + * Run passes it to os.StartProcess as the os.ProcAttr's Sys field. */ - json(code: number, i: { - }): void + sysProcAttr?: syscall.SysProcAttr /** - * JSONPretty sends a pretty-print JSON with status code. + * Process is the underlying process, once started. */ - jsonPretty(code: number, i: { - }, indent: string): void + process?: os.Process /** - * JSONBlob sends a JSON blob response with status code. + * ProcessState contains information about an exited process, + * available after a call to Wait or Run. */ - jsonBlob(code: number, b: string): void + processState?: os.ProcessState + } + interface Cmd { /** - * JSONP sends a JSONP response with status code. It uses `callback` to construct - * the JSONP payload. + * String returns a human-readable description of c. + * It is intended only for debugging. + * In particular, it is not suitable for use as input to a shell. + * The output of String may vary across Go releases. */ - jsonp(code: number, callback: string, i: { - }): void + string(): string + } + interface Cmd { /** - * JSONPBlob sends a JSONP blob response with status code. It uses `callback` - * to construct the JSONP payload. + * Run starts the specified command and waits for it to complete. + * + * The returned error is nil if the command runs, has no problems + * copying stdin, stdout, and stderr, and exits with a zero exit + * status. + * + * If the command starts but does not complete successfully, the error is of + * type *ExitError. Other error types may be returned for other situations. + * + * If the calling goroutine has locked the operating system thread + * with runtime.LockOSThread and modified any inheritable OS-level + * thread state (for example, Linux or Plan 9 name spaces), the new + * process will inherit the caller's thread state. */ - jsonpBlob(code: number, callback: string, b: string): void + run(): void + } + interface Cmd { /** - * XML sends an XML response with status code. + * Start starts the specified command but does not wait for it to complete. + * + * If Start returns successfully, the c.Process field will be set. + * + * The Wait method will return the exit code and release associated resources + * once the command exits. */ - xml(code: number, i: { - }): void + start(): void + } + interface Cmd { /** - * XMLPretty sends a pretty-print XML with status code. + * Wait waits for the command to exit and waits for any copying to + * stdin or copying from stdout or stderr to complete. + * + * The command must have been started by Start. + * + * The returned error is nil if the command runs, has no problems + * copying stdin, stdout, and stderr, and exits with a zero exit + * status. + * + * If the command fails to run or doesn't complete successfully, the + * error is of type *ExitError. Other error types may be + * returned for I/O problems. + * + * If any of c.Stdin, c.Stdout or c.Stderr are not an *os.File, Wait also waits + * for the respective I/O loop copying to or from the process to complete. + * + * Wait releases any resources associated with the Cmd. */ - xmlPretty(code: number, i: { - }, indent: string): void - /** - * XMLBlob sends an XML blob response with status code. + wait(): void + } + interface Cmd { + /** + * Output runs the command and returns its standard output. + * Any returned error will usually be of type *ExitError. + * If c.Stderr was nil, Output populates ExitError.Stderr. */ - xmlBlob(code: number, b: string): void + output(): string + } + interface Cmd { /** - * Blob sends a blob response with status code and content type. + * CombinedOutput runs the command and returns its combined standard + * output and standard error. */ - blob(code: number, contentType: string, b: string): void + combinedOutput(): string + } + interface Cmd { /** - * Stream sends a streaming response with status code and content type. + * StdinPipe returns a pipe that will be connected to the command's + * standard input when the command starts. + * The pipe will be closed automatically after Wait sees the command exit. + * A caller need only call Close to force the pipe to close sooner. + * For example, if the command being run will not exit until standard input + * is closed, the caller must close the pipe. */ - stream(code: number, contentType: string, r: io.Reader): void + stdinPipe(): io.WriteCloser + } + interface Cmd { /** - * File sends a response with the content of the file. + * StdoutPipe returns a pipe that will be connected to the command's + * standard output when the command starts. + * + * Wait will close the pipe after seeing the command exit, so most callers + * need not close the pipe themselves. It is thus incorrect to call Wait + * before all reads from the pipe have completed. + * For the same reason, it is incorrect to call Run when using StdoutPipe. + * See the example for idiomatic usage. */ - file(file: string): void + stdoutPipe(): io.ReadCloser + } + interface Cmd { /** - * FileFS sends a response with the content of the file from given filesystem. + * StderrPipe returns a pipe that will be connected to the command's + * standard error when the command starts. + * + * Wait will close the pipe after seeing the command exit, so most callers + * need not close the pipe themselves. It is thus incorrect to call Wait + * before all reads from the pipe have completed. + * For the same reason, it is incorrect to use Run when using StderrPipe. + * See the StdoutPipe example for idiomatic usage. */ - fileFS(file: string, filesystem: fs.FS): void + stderrPipe(): io.ReadCloser + } +} + +/** + * Package echo implements high performance, minimalist Go web framework. + * + * Example: + * + * ``` + * package main + * + * import ( + * "github.com/labstack/echo/v5" + * "github.com/labstack/echo/v5/middleware" + * "log" + * "net/http" + * ) + * + * // Handler + * func hello(c echo.Context) error { + * return c.String(http.StatusOK, "Hello, World!") + * } + * + * func main() { + * // Echo instance + * e := echo.New() + * + * // Middleware + * e.Use(middleware.Logger()) + * e.Use(middleware.Recover()) + * + * // Routes + * e.GET("/", hello) + * + * // Start server + * if err := e.Start(":8080"); err != http.ErrServerClosed { + * log.Fatal(err) + * } + * } + * ``` + * + * Learn more at https://echo.labstack.com + */ +namespace echo { + /** + * Context represents the context of the current HTTP request. It holds request and + * response objects, path, path parameters, data and registered handler. + */ + interface Context { /** - * Attachment sends a response as attachment, prompting client to save the - * file. + * Request returns `*http.Request`. */ - attachment(file: string, name: string): void + request(): (http.Request | undefined) /** - * Inline sends a response as inline, opening the file in the browser. + * SetRequest sets `*http.Request`. */ - inline(file: string, name: string): void + setRequest(r: http.Request): void /** - * NoContent sends a response with no body and a status code. + * SetResponse sets `*Response`. */ - noContent(code: number): void + setResponse(r: Response): void /** - * Redirect redirects the request to a provided URL with status code. + * Response returns `*Response`. */ - redirect(code: number, url: string): void + response(): (Response | undefined) /** - * Error invokes the registered global HTTP error handler. Generally used by middleware. - * A side-effect of calling global error handler is that now Response has been committed (sent to the client) and - * middlewares up in chain can not change Response status code or Response body anymore. - * - * Avoid using this method in handlers as no middleware will be able to effectively handle errors after that. - * Instead of calling this method in handler return your error and let it be handled by middlewares or global error handler. + * IsTLS returns true if HTTP connection is TLS otherwise false. */ - error(err: Error): void + isTLS(): boolean /** - * Echo returns the `Echo` instance. - * - * WARNING: Remember that Echo public fields and methods are coroutine safe ONLY when you are NOT mutating them - * anywhere in your code after Echo server has started. + * IsWebSocket returns true if HTTP connection is WebSocket otherwise false. */ - echo(): (Echo | undefined) - } - // @ts-ignore - import stdContext = context - /** - * Echo is the top-level framework instance. - * - * Goroutine safety: Do not mutate Echo instance fields after server has started. Accessing these - * fields from handlers/middlewares and changing field values at the same time leads to data-races. - * Same rule applies to adding new routes after server has been started - Adding a route is not Goroutine safe action. - */ - interface Echo { + isWebSocket(): boolean /** - * NewContextFunc allows using custom context implementations, instead of default *echo.context + * Scheme returns the HTTP protocol scheme, `http` or `https`. */ - newContextFunc: (e: Echo, pathParamAllocSize: number) => ServableContext - debug: boolean - httpErrorHandler: HTTPErrorHandler - binder: Binder - jsonSerializer: JSONSerializer - validator: Validator - renderer: Renderer - logger: Logger - ipExtractor: IPExtractor + scheme(): string /** - * Filesystem is file system used by Static and File handlers to access files. - * Defaults to os.DirFS(".") - * - * When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary - * prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths - * including `assets/images` as their prefix. + * RealIP returns the client's network address based on `X-Forwarded-For` + * or `X-Real-IP` request header. + * The behavior can be configured using `Echo#IPExtractor`. */ - filesystem: fs.FS + realIP(): string /** - * OnAddRoute is called when Echo adds new route to specific host router. Handler is called for every router - * and before route is added to the host router. + * RouteInfo returns current request route information. Method, Path, Name and params if they exist for matched route. + * In case of 404 (route not found) and 405 (method not allowed) RouteInfo returns generic struct for these cases. */ - onAddRoute: (host: string, route: Routable) => void - } - /** - * HandlerFunc defines a function to serve HTTP requests. - */ - interface HandlerFunc {(c: Context): void } - /** - * MiddlewareFunc defines a function to process middleware. - */ - interface MiddlewareFunc {(next: HandlerFunc): HandlerFunc } - interface Echo { + routeInfo(): RouteInfo /** - * NewContext returns a new Context instance. - * - * Note: both request and response can be left to nil as Echo.ServeHTTP will call c.Reset(req,resp) anyway - * these arguments are useful when creating context for tests and cases like that. + * Path returns the registered path for the handler. */ - newContext(r: http.Request, w: http.ResponseWriter): Context - } - interface Echo { + path(): string /** - * Router returns the default router. + * PathParam returns path parameter by name. */ - router(): Router - } - interface Echo { + pathParam(name: string): string /** - * Routers returns the new map of host => router. + * PathParamDefault returns the path parameter or default value for the provided name. + * + * Notes for DefaultRouter implementation: + * Path parameter could be empty for cases like that: + * * route `/release-:version/bin` and request URL is `/release-/bin` + * * route `/api/:version/image.jpg` and request URL is `/api//image.jpg` + * but not when path parameter is last part of route path + * * route `/download/file.:ext` will not match request `/download/file.` */ - routers(): _TygojaDict - } - interface Echo { + pathParamDefault(name: string, defaultValue: string): string /** - * RouterFor returns Router for given host. When host is left empty the default router is returned. + * PathParams returns path parameter values. */ - routerFor(host: string): [Router, boolean] - } - interface Echo { + pathParams(): PathParams /** - * ResetRouterCreator resets callback for creating new router instances. - * Note: current (default) router is immediately replaced with router created with creator func and vhost routers are cleared. + * SetPathParams sets path parameters for current request. */ - resetRouterCreator(creator: (e: Echo) => Router): void - } - interface Echo { + setPathParams(params: PathParams): void /** - * Pre adds middleware to the chain which is run before router tries to find matching route. - * Meaning middleware is executed even for 404 (not found) cases. + * QueryParam returns the query param for the provided name. */ - pre(...middleware: MiddlewareFunc[]): void - } - interface Echo { + queryParam(name: string): string /** - * Use adds middleware to the chain which is run after router has found matching route and before route/request handler method is executed. + * QueryParamDefault returns the query param or default value for the provided name. */ - use(...middleware: MiddlewareFunc[]): void - } - interface Echo { + queryParamDefault(name: string): string /** - * CONNECT registers a new CONNECT route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * QueryParams returns the query parameters as `url.Values`. */ - connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + queryParams(): url.Values /** - * DELETE registers a new DELETE route for a path with matching handler in the router - * with optional route-level middleware. Panics on error. + * QueryString returns the URL query string. */ - delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + queryString(): string /** - * GET registers a new GET route for a path with matching handler in the router - * with optional route-level middleware. Panics on error. + * FormValue returns the form field value for the provided name. */ - get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + formValue(name: string): string /** - * HEAD registers a new HEAD route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * FormValueDefault returns the form field value or default value for the provided name. */ - head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + formValueDefault(name: string): string /** - * OPTIONS registers a new OPTIONS route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * FormValues returns the form field values as `url.Values`. */ - options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + formValues(): url.Values /** - * PATCH registers a new PATCH route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * FormFile returns the multipart form file for the provided name. */ - patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + formFile(name: string): (multipart.FileHeader | undefined) /** - * POST registers a new POST route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * MultipartForm returns the multipart form. */ - post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + multipartForm(): (multipart.Form | undefined) /** - * PUT registers a new PUT route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * Cookie returns the named cookie provided in the request. */ - put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + cookie(name: string): (http.Cookie | undefined) /** - * TRACE registers a new TRACE route for a path with matching handler in the - * router with optional route-level middleware. Panics on error. + * SetCookie adds a `Set-Cookie` header in HTTP response. */ - trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo - } - interface Echo { + setCookie(cookie: http.Cookie): void /** - * RouteNotFound registers a special-case route which is executed when no other route is found (i.e. HTTP 404 cases) - * for current request URL. - * Path supports static and named/any parameters just like other http method is defined. Generally path is ended with - * wildcard/match-any character (`/*`, `/download/*` etc). - * - * Example: `e.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })` + * Cookies returns the HTTP cookies sent with the request. */ - routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + cookies(): Array<(http.Cookie | undefined)> + /** + * Get retrieves data from the context. + */ + get(key: string): { } - interface Echo { /** - * Any registers a new route for all HTTP methods (supported by Echo) and path with matching handler - * in the router with optional route-level middleware. + * Set saves data in the context. + */ + set(key: string, val: { + }): void + /** + * Bind binds path params, query params and the request body into provided type `i`. The default binder + * binds body based on Content-Type header. + */ + bind(i: { + }): void + /** + * Validate validates provided `i`. It is usually called after `Context#Bind()`. + * Validator must be registered using `Echo#Validator`. + */ + validate(i: { + }): void + /** + * Render renders a template with data and sends a text/html response with status + * code. Renderer must be registered using `Echo.Renderer`. + */ + render(code: number, name: string, data: { + }): void + /** + * HTML sends an HTTP response with status code. + */ + html(code: number, html: string): void + /** + * HTMLBlob sends an HTTP blob response with status code. + */ + htmlBlob(code: number, b: string): void + /** + * String sends a string response with status code. + */ + string(code: number, s: string): void + /** + * JSON sends a JSON response with status code. + */ + json(code: number, i: { + }): void + /** + * JSONPretty sends a pretty-print JSON with status code. + */ + jsonPretty(code: number, i: { + }, indent: string): void + /** + * JSONBlob sends a JSON blob response with status code. + */ + jsonBlob(code: number, b: string): void + /** + * JSONP sends a JSONP response with status code. It uses `callback` to construct + * the JSONP payload. + */ + jsonp(code: number, callback: string, i: { + }): void + /** + * JSONPBlob sends a JSONP blob response with status code. It uses `callback` + * to construct the JSONP payload. + */ + jsonpBlob(code: number, callback: string, b: string): void + /** + * XML sends an XML response with status code. + */ + xml(code: number, i: { + }): void + /** + * XMLPretty sends a pretty-print XML with status code. + */ + xmlPretty(code: number, i: { + }, indent: string): void + /** + * XMLBlob sends an XML blob response with status code. + */ + xmlBlob(code: number, b: string): void + /** + * Blob sends a blob response with status code and content type. + */ + blob(code: number, contentType: string, b: string): void + /** + * Stream sends a streaming response with status code and content type. + */ + stream(code: number, contentType: string, r: io.Reader): void + /** + * File sends a response with the content of the file. + */ + file(file: string): void + /** + * FileFS sends a response with the content of the file from given filesystem. + */ + fileFS(file: string, filesystem: fs.FS): void + /** + * Attachment sends a response as attachment, prompting client to save the + * file. + */ + attachment(file: string, name: string): void + /** + * Inline sends a response as inline, opening the file in the browser. + */ + inline(file: string, name: string): void + /** + * NoContent sends a response with no body and a status code. + */ + noContent(code: number): void + /** + * Redirect redirects the request to a provided URL with status code. + */ + redirect(code: number, url: string): void + /** + * Error invokes the registered global HTTP error handler. Generally used by middleware. + * A side-effect of calling global error handler is that now Response has been committed (sent to the client) and + * middlewares up in chain can not change Response status code or Response body anymore. * - * Note: this method only adds specific set of supported HTTP methods as handler and is not true - * "catch-any-arbitrary-method" way of matching requests. + * Avoid using this method in handlers as no middleware will be able to effectively handle errors after that. + * Instead of calling this method in handler return your error and let it be handled by middlewares or global error handler. */ - any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes - } - interface Echo { + error(err: Error): void /** - * Match registers a new route for multiple HTTP methods and path with matching - * handler in the router with optional route-level middleware. Panics on error. + * Echo returns the `Echo` instance. + * + * WARNING: Remember that Echo public fields and methods are coroutine safe ONLY when you are NOT mutating them + * anywhere in your code after Echo server has started. */ - match(methods: Array, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes + echo(): (Echo | undefined) } + // @ts-ignore + import stdContext = context + /** + * Echo is the top-level framework instance. + * + * Goroutine safety: Do not mutate Echo instance fields after server has started. Accessing these + * fields from handlers/middlewares and changing field values at the same time leads to data-races. + * Same rule applies to adding new routes after server has been started - Adding a route is not Goroutine safe action. + */ interface Echo { /** - * Static registers a new route with path prefix to serve static files from the provided root directory. + * NewContextFunc allows using custom context implementations, instead of default *echo.context */ - static(pathPrefix: string): RouteInfo - } - interface Echo { + newContextFunc: (e: Echo, pathParamAllocSize: number) => ServableContext + debug: boolean + httpErrorHandler: HTTPErrorHandler + binder: Binder + jsonSerializer: JSONSerializer + validator: Validator + renderer: Renderer + logger: Logger + ipExtractor: IPExtractor /** - * StaticFS registers a new route with path prefix to serve static files from the provided file system. + * Filesystem is file system used by Static and File handlers to access files. + * Defaults to os.DirFS(".") * * When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary * prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths * including `assets/images` as their prefix. */ - staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo - } - interface Echo { + filesystem: fs.FS /** - * FileFS registers a new route with path to serve file from the provided file system. + * OnAddRoute is called when Echo adds new route to specific host router. Handler is called for every router + * and before route is added to the host router. */ - fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo + onAddRoute: (host: string, route: Routable) => void } + /** + * HandlerFunc defines a function to serve HTTP requests. + */ + interface HandlerFunc {(c: Context): void } + /** + * MiddlewareFunc defines a function to process middleware. + */ + interface MiddlewareFunc {(next: HandlerFunc): HandlerFunc } interface Echo { /** - * File registers a new route with path to serve a static file with optional route-level middleware. Panics on error. + * NewContext returns a new Context instance. + * + * Note: both request and response can be left to nil as Echo.ServeHTTP will call c.Reset(req,resp) anyway + * these arguments are useful when creating context for tests and cases like that. */ - file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo + newContext(r: http.Request, w: http.ResponseWriter): Context } interface Echo { /** - * AddRoute registers a new Route with default host Router + * Router returns the default router. */ - addRoute(route: Routable): RouteInfo + router(): Router } interface Echo { /** - * Add registers a new route for an HTTP method and path with matching handler - * in the router with optional route-level middleware. + * Routers returns the new map of host => router. */ - add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo + routers(): _TygojaDict } interface Echo { /** - * Host creates a new router group for the provided host and optional host-level middleware. + * RouterFor returns Router for given host. When host is left empty the default router is returned. */ - host(name: string, ...m: MiddlewareFunc[]): (Group | undefined) + routerFor(host: string): [Router, boolean] } interface Echo { /** - * Group creates a new router group with prefix and optional group-level middleware. + * ResetRouterCreator resets callback for creating new router instances. + * Note: current (default) router is immediately replaced with router created with creator func and vhost routers are cleared. */ - group(prefix: string, ...m: MiddlewareFunc[]): (Group | undefined) + resetRouterCreator(creator: (e: Echo) => Router): void + } + interface Echo { + /** + * Pre adds middleware to the chain which is run before router tries to find matching route. + * Meaning middleware is executed even for 404 (not found) cases. + */ + pre(...middleware: MiddlewareFunc[]): void + } + interface Echo { + /** + * Use adds middleware to the chain which is run after router has found matching route and before route/request handler method is executed. + */ + use(...middleware: MiddlewareFunc[]): void + } + interface Echo { + /** + * CONNECT registers a new CONNECT route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * DELETE registers a new DELETE route for a path with matching handler in the router + * with optional route-level middleware. Panics on error. + */ + delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * GET registers a new GET route for a path with matching handler in the router + * with optional route-level middleware. Panics on error. + */ + get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * HEAD registers a new HEAD route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * OPTIONS registers a new OPTIONS route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * PATCH registers a new PATCH route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * POST registers a new POST route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * PUT registers a new PUT route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * TRACE registers a new TRACE route for a path with matching handler in the + * router with optional route-level middleware. Panics on error. + */ + trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * RouteNotFound registers a special-case route which is executed when no other route is found (i.e. HTTP 404 cases) + * for current request URL. + * Path supports static and named/any parameters just like other http method is defined. Generally path is ended with + * wildcard/match-any character (`/*`, `/download/*` etc). + * + * Example: `e.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })` + */ + routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * Any registers a new route for all HTTP methods (supported by Echo) and path with matching handler + * in the router with optional route-level middleware. + * + * Note: this method only adds specific set of supported HTTP methods as handler and is not true + * "catch-any-arbitrary-method" way of matching requests. + */ + any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes + } + interface Echo { + /** + * Match registers a new route for multiple HTTP methods and path with matching + * handler in the router with optional route-level middleware. Panics on error. + */ + match(methods: Array, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes + } + interface Echo { + /** + * Static registers a new route with path prefix to serve static files from the provided root directory. + */ + static(pathPrefix: string): RouteInfo + } + interface Echo { + /** + * StaticFS registers a new route with path prefix to serve static files from the provided file system. + * + * When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary + * prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths + * including `assets/images` as their prefix. + */ + staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo + } + interface Echo { + /** + * FileFS registers a new route with path to serve file from the provided file system. + */ + fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * File registers a new route with path to serve a static file with optional route-level middleware. Panics on error. + */ + file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * AddRoute registers a new Route with default host Router + */ + addRoute(route: Routable): RouteInfo + } + interface Echo { + /** + * Add registers a new route for an HTTP method and path with matching handler + * in the router with optional route-level middleware. + */ + add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo + } + interface Echo { + /** + * Host creates a new router group for the provided host and optional host-level middleware. + */ + host(name: string, ...m: MiddlewareFunc[]): (Group | undefined) + } + interface Echo { + /** + * Group creates a new router group with prefix and optional group-level middleware. + */ + group(prefix: string, ...m: MiddlewareFunc[]): (Group | undefined) } interface Echo { /** @@ -9622,519 +9615,636 @@ namespace echo { } /** - * Package exec runs external commands. It wraps os.StartProcess to make it - * easier to remap stdin and stdout, connect I/O with pipes, and do other - * adjustments. + * Package sql provides a generic interface around SQL (or SQL-like) + * databases. * - * Unlike the "system" library call from C and other languages, the - * os/exec package intentionally does not invoke the system shell and - * does not expand any glob patterns or handle other expansions, - * pipelines, or redirections typically done by shells. The package - * behaves more like C's "exec" family of functions. To expand glob - * patterns, either call the shell directly, taking care to escape any - * dangerous input, or use the path/filepath package's Glob function. - * To expand environment variables, use package os's ExpandEnv. + * The sql package must be used in conjunction with a database driver. + * See https://golang.org/s/sqldrivers for a list of drivers. * - * Note that the examples in this package assume a Unix system. - * They may not run on Windows, and they do not run in the Go Playground - * used by golang.org and godoc.org. + * Drivers that do not support context cancellation will not return until + * after the query is completed. + * + * For usage examples, see the wiki page at + * https://golang.org/s/sqlwiki. */ -namespace exec { +namespace sql { /** - * Cmd represents an external command being prepared or run. + * TxOptions holds the transaction options to be used in DB.BeginTx. + */ + interface TxOptions { + /** + * Isolation is the transaction isolation level. + * If zero, the driver or database's default level is used. + */ + isolation: IsolationLevel + readOnly: boolean + } + /** + * DB is a database handle representing a pool of zero or more + * underlying connections. It's safe for concurrent use by multiple + * goroutines. * - * A Cmd cannot be reused after calling its Run, Output or CombinedOutput - * methods. + * The sql package creates and frees connections automatically; it + * also maintains a free pool of idle connections. If the database has + * a concept of per-connection state, such state can be reliably observed + * within a transaction (Tx) or connection (Conn). Once DB.Begin is called, the + * returned Tx is bound to a single connection. Once Commit or + * Rollback is called on the transaction, that transaction's + * connection is returned to DB's idle connection pool. The pool size + * can be controlled with SetMaxIdleConns. */ - interface Cmd { + interface DB { + } + interface DB { /** - * Path is the path of the command to run. - * - * This is the only field that must be set to a non-zero - * value. If Path is relative, it is evaluated relative - * to Dir. + * PingContext verifies a connection to the database is still alive, + * establishing a connection if necessary. */ - path: string + pingContext(ctx: context.Context): void + } + interface DB { /** - * Args holds command line arguments, including the command as Args[0]. - * If the Args field is empty or nil, Run uses {Path}. + * Ping verifies a connection to the database is still alive, + * establishing a connection if necessary. * - * In typical use, both Path and Args are set by calling Command. + * Ping uses context.Background internally; to specify the context, use + * PingContext. */ - args: Array + ping(): void + } + interface DB { /** - * Env specifies the environment of the process. - * Each entry is of the form "key=value". - * If Env is nil, the new process uses the current process's - * environment. - * If Env contains duplicate environment keys, only the last - * value in the slice for each duplicate key is used. - * As a special case on Windows, SYSTEMROOT is always added if - * missing and not explicitly set to the empty string. + * Close closes the database and prevents new queries from starting. + * Close then waits for all queries that have started processing on the server + * to finish. + * + * It is rare to Close a DB, as the DB handle is meant to be + * long-lived and shared between many goroutines. */ - env: Array + close(): void + } + interface DB { /** - * Dir specifies the working directory of the command. - * If Dir is the empty string, Run runs the command in the - * calling process's current directory. - */ - dir: string - /** - * Stdin specifies the process's standard input. + * SetMaxIdleConns sets the maximum number of connections in the idle + * connection pool. * - * If Stdin is nil, the process reads from the null device (os.DevNull). + * If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, + * then the new MaxIdleConns will be reduced to match the MaxOpenConns limit. * - * If Stdin is an *os.File, the process's standard input is connected - * directly to that file. + * If n <= 0, no idle connections are retained. * - * Otherwise, during the execution of the command a separate - * goroutine reads from Stdin and delivers that data to the command - * over a pipe. In this case, Wait does not complete until the goroutine - * stops copying, either because it has reached the end of Stdin - * (EOF or a read error) or because writing to the pipe returned an error. + * The default max idle connections is currently 2. This may change in + * a future release. */ - stdin: io.Reader + setMaxIdleConns(n: number): void + } + interface DB { /** - * Stdout and Stderr specify the process's standard output and error. - * - * If either is nil, Run connects the corresponding file descriptor - * to the null device (os.DevNull). - * - * If either is an *os.File, the corresponding output from the process - * is connected directly to that file. + * SetMaxOpenConns sets the maximum number of open connections to the database. * - * Otherwise, during the execution of the command a separate goroutine - * reads from the process over a pipe and delivers that data to the - * corresponding Writer. In this case, Wait does not complete until the - * goroutine reaches EOF or encounters an error. + * If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than + * MaxIdleConns, then MaxIdleConns will be reduced to match the new + * MaxOpenConns limit. * - * If Stdout and Stderr are the same writer, and have a type that can - * be compared with ==, at most one goroutine at a time will call Write. + * If n <= 0, then there is no limit on the number of open connections. + * The default is 0 (unlimited). */ - stdout: io.Writer - stderr: io.Writer + setMaxOpenConns(n: number): void + } + interface DB { /** - * ExtraFiles specifies additional open files to be inherited by the - * new process. It does not include standard input, standard output, or - * standard error. If non-nil, entry i becomes file descriptor 3+i. + * SetConnMaxLifetime sets the maximum amount of time a connection may be reused. * - * ExtraFiles is not supported on Windows. - */ - extraFiles: Array<(os.File | undefined)> - /** - * SysProcAttr holds optional, operating system-specific attributes. - * Run passes it to os.StartProcess as the os.ProcAttr's Sys field. + * Expired connections may be closed lazily before reuse. + * + * If d <= 0, connections are not closed due to a connection's age. */ - sysProcAttr?: syscall.SysProcAttr + setConnMaxLifetime(d: time.Duration): void + } + interface DB { /** - * Process is the underlying process, once started. + * SetConnMaxIdleTime sets the maximum amount of time a connection may be idle. + * + * Expired connections may be closed lazily before reuse. + * + * If d <= 0, connections are not closed due to a connection's idle time. */ - process?: os.Process + setConnMaxIdleTime(d: time.Duration): void + } + interface DB { /** - * ProcessState contains information about an exited process, - * available after a call to Wait or Run. + * Stats returns database statistics. */ - processState?: os.ProcessState + stats(): DBStats } - interface Cmd { + interface DB { /** - * String returns a human-readable description of c. - * It is intended only for debugging. - * In particular, it is not suitable for use as input to a shell. - * The output of String may vary across Go releases. + * PrepareContext creates a prepared statement for later queries or executions. + * Multiple queries or executions may be run concurrently from the + * returned statement. + * The caller must call the statement's Close method + * when the statement is no longer needed. + * + * The provided context is used for the preparation of the statement, not for the + * execution of the statement. */ - string(): string + prepareContext(ctx: context.Context, query: string): (Stmt | undefined) } - interface Cmd { + interface DB { /** - * Run starts the specified command and waits for it to complete. - * - * The returned error is nil if the command runs, has no problems - * copying stdin, stdout, and stderr, and exits with a zero exit - * status. - * - * If the command starts but does not complete successfully, the error is of - * type *ExitError. Other error types may be returned for other situations. + * Prepare creates a prepared statement for later queries or executions. + * Multiple queries or executions may be run concurrently from the + * returned statement. + * The caller must call the statement's Close method + * when the statement is no longer needed. * - * If the calling goroutine has locked the operating system thread - * with runtime.LockOSThread and modified any inheritable OS-level - * thread state (for example, Linux or Plan 9 name spaces), the new - * process will inherit the caller's thread state. + * Prepare uses context.Background internally; to specify the context, use + * PrepareContext. */ - run(): void + prepare(query: string): (Stmt | undefined) } - interface Cmd { + interface DB { /** - * Start starts the specified command but does not wait for it to complete. - * - * If Start returns successfully, the c.Process field will be set. - * - * The Wait method will return the exit code and release associated resources - * once the command exits. + * ExecContext executes a query without returning any rows. + * The args are for any placeholder parameters in the query. */ - start(): void + execContext(ctx: context.Context, query: string, ...args: any[]): Result } - interface Cmd { + interface DB { /** - * Wait waits for the command to exit and waits for any copying to - * stdin or copying from stdout or stderr to complete. - * - * The command must have been started by Start. - * - * The returned error is nil if the command runs, has no problems - * copying stdin, stdout, and stderr, and exits with a zero exit - * status. - * - * If the command fails to run or doesn't complete successfully, the - * error is of type *ExitError. Other error types may be - * returned for I/O problems. - * - * If any of c.Stdin, c.Stdout or c.Stderr are not an *os.File, Wait also waits - * for the respective I/O loop copying to or from the process to complete. + * Exec executes a query without returning any rows. + * The args are for any placeholder parameters in the query. * - * Wait releases any resources associated with the Cmd. + * Exec uses context.Background internally; to specify the context, use + * ExecContext. */ - wait(): void + exec(query: string, ...args: any[]): Result } - interface Cmd { + interface DB { /** - * Output runs the command and returns its standard output. - * Any returned error will usually be of type *ExitError. - * If c.Stderr was nil, Output populates ExitError.Stderr. + * QueryContext executes a query that returns rows, typically a SELECT. + * The args are for any placeholder parameters in the query. */ - output(): string + queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) } - interface Cmd { + interface DB { /** - * CombinedOutput runs the command and returns its combined standard - * output and standard error. + * Query executes a query that returns rows, typically a SELECT. + * The args are for any placeholder parameters in the query. + * + * Query uses context.Background internally; to specify the context, use + * QueryContext. */ - combinedOutput(): string + query(query: string, ...args: any[]): (Rows | undefined) } - interface Cmd { + interface DB { /** - * StdinPipe returns a pipe that will be connected to the command's - * standard input when the command starts. - * The pipe will be closed automatically after Wait sees the command exit. - * A caller need only call Close to force the pipe to close sooner. - * For example, if the command being run will not exit until standard input - * is closed, the caller must close the pipe. + * QueryRowContext executes a query that is expected to return at most one row. + * QueryRowContext always returns a non-nil value. Errors are deferred until + * Row's Scan method is called. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. */ - stdinPipe(): io.WriteCloser + queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) } - interface Cmd { + interface DB { /** - * StdoutPipe returns a pipe that will be connected to the command's - * standard output when the command starts. + * QueryRow executes a query that is expected to return at most one row. + * QueryRow always returns a non-nil value. Errors are deferred until + * Row's Scan method is called. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. * - * Wait will close the pipe after seeing the command exit, so most callers - * need not close the pipe themselves. It is thus incorrect to call Wait - * before all reads from the pipe have completed. - * For the same reason, it is incorrect to call Run when using StdoutPipe. - * See the example for idiomatic usage. + * QueryRow uses context.Background internally; to specify the context, use + * QueryRowContext. */ - stdoutPipe(): io.ReadCloser + queryRow(query: string, ...args: any[]): (Row | undefined) } - interface Cmd { + interface DB { /** - * StderrPipe returns a pipe that will be connected to the command's - * standard error when the command starts. + * BeginTx starts a transaction. * - * Wait will close the pipe after seeing the command exit, so most callers - * need not close the pipe themselves. It is thus incorrect to call Wait - * before all reads from the pipe have completed. - * For the same reason, it is incorrect to use Run when using StderrPipe. - * See the StdoutPipe example for idiomatic usage. + * The provided context is used until the transaction is committed or rolled back. + * If the context is canceled, the sql package will roll back + * the transaction. Tx.Commit will return an error if the context provided to + * BeginTx is canceled. + * + * The provided TxOptions is optional and may be nil if defaults should be used. + * If a non-default isolation level is used that the driver doesn't support, + * an error will be returned. */ - stderrPipe(): io.ReadCloser + beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined) } -} - -/** - * Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html - * - * See README.md for more info. - */ -namespace jwt { - /** - * MapClaims is a claims type that uses the map[string]interface{} for JSON decoding. - * This is the default claims type if you don't supply one - */ - interface MapClaims extends _TygojaDict{} - interface MapClaims { + interface DB { /** - * VerifyAudience Compares the aud claim against cmp. - * If required is false, this method will return true if the value matches or is unset + * Begin starts a transaction. The default isolation level is dependent on + * the driver. + * + * Begin uses context.Background internally; to specify the context, use + * BeginTx. */ - verifyAudience(cmp: string, req: boolean): boolean + begin(): (Tx | undefined) } - interface MapClaims { + interface DB { /** - * VerifyExpiresAt compares the exp claim against cmp (cmp <= exp). - * If req is false, it will return true, if exp is unset. + * Driver returns the database's underlying driver. */ - verifyExpiresAt(cmp: number, req: boolean): boolean + driver(): any } - interface MapClaims { + interface DB { /** - * VerifyIssuedAt compares the exp claim against cmp (cmp >= iat). - * If req is false, it will return true, if iat is unset. + * Conn returns a single connection by either opening a new connection + * or returning an existing connection from the connection pool. Conn will + * block until either a connection is returned or ctx is canceled. + * Queries run on the same Conn will be run in the same database session. + * + * Every Conn must be returned to the database pool after use by + * calling Conn.Close. */ - verifyIssuedAt(cmp: number, req: boolean): boolean + conn(ctx: context.Context): (Conn | undefined) } - interface MapClaims { + /** + * Tx is an in-progress database transaction. + * + * A transaction must end with a call to Commit or Rollback. + * + * After a call to Commit or Rollback, all operations on the + * transaction fail with ErrTxDone. + * + * The statements prepared for a transaction by calling + * the transaction's Prepare or Stmt methods are closed + * by the call to Commit or Rollback. + */ + interface Tx { + } + interface Tx { /** - * VerifyNotBefore compares the nbf claim against cmp (cmp >= nbf). - * If req is false, it will return true, if nbf is unset. + * Commit commits the transaction. */ - verifyNotBefore(cmp: number, req: boolean): boolean + commit(): void } - interface MapClaims { + interface Tx { /** - * VerifyIssuer compares the iss claim against cmp. - * If required is false, this method will return true if the value matches or is unset + * Rollback aborts the transaction. */ - verifyIssuer(cmp: string, req: boolean): boolean + rollback(): void } - interface MapClaims { + interface Tx { /** - * Valid validates time based claims "exp, iat, nbf". - * There is no accounting for clock skew. - * As well, if any of the above claims are not in the token, it will still - * be considered a valid claim. + * PrepareContext creates a prepared statement for use within a transaction. + * + * The returned statement operates within the transaction and will be closed + * when the transaction has been committed or rolled back. + * + * To use an existing prepared statement on this transaction, see Tx.Stmt. + * + * The provided context will be used for the preparation of the context, not + * for the execution of the returned statement. The returned statement + * will run in the transaction context. */ - valid(): void + prepareContext(ctx: context.Context, query: string): (Stmt | undefined) } -} - -/** - * Package blob provides an easy and portable way to interact with blobs - * within a storage location. Subpackages contain driver implementations of - * blob for supported services. - * - * See https://gocloud.dev/howto/blob/ for a detailed how-to guide. - * - * *blob.Bucket implements io/fs.FS and io/fs.SubFS, so it can be used with - * functions in that package. - * - * # Errors - * - * The errors returned from this package can be inspected in several ways: - * - * The Code function from gocloud.dev/gcerrors will return an error code, also - * defined in that package, when invoked on an error. - * - * The Bucket.ErrorAs method can retrieve the driver error underlying the returned - * error. - * - * # OpenCensus Integration - * - * OpenCensus supports tracing and metric collection for multiple languages and - * backend providers. See https://opencensus.io. - * - * This API collects OpenCensus traces and metrics for the following methods: - * ``` - * - Attributes - * - Copy - * - Delete - * - ListPage - * - NewRangeReader, from creation until the call to Close. (NewReader and ReadAll - * are included because they call NewRangeReader.) - * - NewWriter, from creation until the call to Close. - * ``` - * - * All trace and metric names begin with the package import path. - * The traces add the method name. - * For example, "gocloud.dev/blob/Attributes". - * The metrics are "completed_calls", a count of completed method calls by driver, - * method and status (error code); and "latency", a distribution of method latency - * by driver and method. - * For example, "gocloud.dev/blob/latency". - * - * It also collects the following metrics: - * ``` - * - gocloud.dev/blob/bytes_read: the total number of bytes read, by driver. - * - gocloud.dev/blob/bytes_written: the total number of bytes written, by driver. - * ``` - * - * To enable trace collection in your application, see "Configure Exporter" at - * https://opencensus.io/quickstart/go/tracing. - * To enable metric collection in your application, see "Exporting stats" at - * https://opencensus.io/quickstart/go/metrics. - */ -namespace blob { - /** - * Reader reads bytes from a blob. - * It implements io.ReadSeekCloser, and must be closed after - * reads are finished. - */ - interface Reader { + interface Tx { + /** + * Prepare creates a prepared statement for use within a transaction. + * + * The returned statement operates within the transaction and will be closed + * when the transaction has been committed or rolled back. + * + * To use an existing prepared statement on this transaction, see Tx.Stmt. + * + * Prepare uses context.Background internally; to specify the context, use + * PrepareContext. + */ + prepare(query: string): (Stmt | undefined) } - interface Reader { + interface Tx { /** - * Read implements io.Reader (https://golang.org/pkg/io/#Reader). + * StmtContext returns a transaction-specific prepared statement from + * an existing statement. + * + * Example: + * updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?") + * ... + * tx, err := db.Begin() + * ... + * res, err := tx.StmtContext(ctx, updateMoney).Exec(123.45, 98293203) + * + * The provided context is used for the preparation of the statement, not for the + * execution of the statement. + * + * The returned statement operates within the transaction and will be closed + * when the transaction has been committed or rolled back. */ - read(p: string): number + stmtContext(ctx: context.Context, stmt: Stmt): (Stmt | undefined) } - interface Reader { + interface Tx { /** - * Seek implements io.Seeker (https://golang.org/pkg/io/#Seeker). + * Stmt returns a transaction-specific prepared statement from + * an existing statement. + * + * Example: + * updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?") + * ... + * tx, err := db.Begin() + * ... + * res, err := tx.Stmt(updateMoney).Exec(123.45, 98293203) + * + * The returned statement operates within the transaction and will be closed + * when the transaction has been committed or rolled back. + * + * Stmt uses context.Background internally; to specify the context, use + * StmtContext. */ - seek(offset: number, whence: number): number + stmt(stmt: Stmt): (Stmt | undefined) } - interface Reader { + interface Tx { /** - * Close implements io.Closer (https://golang.org/pkg/io/#Closer). + * ExecContext executes a query that doesn't return rows. + * For example: an INSERT and UPDATE. */ - close(): void + execContext(ctx: context.Context, query: string, ...args: any[]): Result } - interface Reader { + interface Tx { /** - * ContentType returns the MIME type of the blob. + * Exec executes a query that doesn't return rows. + * For example: an INSERT and UPDATE. + * + * Exec uses context.Background internally; to specify the context, use + * ExecContext. */ - contentType(): string + exec(query: string, ...args: any[]): Result } - interface Reader { + interface Tx { /** - * ModTime returns the time the blob was last modified. + * QueryContext executes a query that returns rows, typically a SELECT. */ - modTime(): time.Time + queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) } - interface Reader { + interface Tx { /** - * Size returns the size of the blob content in bytes. + * Query executes a query that returns rows, typically a SELECT. + * + * Query uses context.Background internally; to specify the context, use + * QueryContext. */ - size(): number + query(query: string, ...args: any[]): (Rows | undefined) } - interface Reader { + interface Tx { /** - * As converts i to driver-specific types. - * See https://gocloud.dev/concepts/as/ for background information, the "As" - * examples in this package for examples, and the driver package - * documentation for the specific types supported for that driver. + * QueryRowContext executes a query that is expected to return at most one row. + * QueryRowContext always returns a non-nil value. Errors are deferred until + * Row's Scan method is called. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. */ - as(i: { - }): boolean + queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) } - interface Reader { + interface Tx { /** - * WriteTo reads from r and writes to w until there's no more data or - * an error occurs. - * The return value is the number of bytes written to w. + * QueryRow executes a query that is expected to return at most one row. + * QueryRow always returns a non-nil value. Errors are deferred until + * Row's Scan method is called. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. * - * It implements the io.WriterTo interface. + * QueryRow uses context.Background internally; to specify the context, use + * QueryRowContext. */ - writeTo(w: io.Writer): number + queryRow(query: string, ...args: any[]): (Row | undefined) } /** - * Attributes contains attributes about a blob. + * Stmt is a prepared statement. + * A Stmt is safe for concurrent use by multiple goroutines. + * + * If a Stmt is prepared on a Tx or Conn, it will be bound to a single + * underlying connection forever. If the Tx or Conn closes, the Stmt will + * become unusable and all operations will return an error. + * If a Stmt is prepared on a DB, it will remain usable for the lifetime of the + * DB. When the Stmt needs to execute on a new underlying connection, it will + * prepare itself on the new connection automatically. */ - interface Attributes { + interface Stmt { + } + interface Stmt { /** - * CacheControl specifies caching attributes that services may use - * when serving the blob. - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control - */ - cacheControl: string - /** - * ContentDisposition specifies whether the blob content is expected to be - * displayed inline or as an attachment. - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition - */ - contentDisposition: string - /** - * ContentEncoding specifies the encoding used for the blob's content, if any. - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + * ExecContext executes a prepared statement with the given arguments and + * returns a Result summarizing the effect of the statement. */ - contentEncoding: string + execContext(ctx: context.Context, ...args: any[]): Result + } + interface Stmt { /** - * ContentLanguage specifies the language used in the blob's content, if any. - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language + * Exec executes a prepared statement with the given arguments and + * returns a Result summarizing the effect of the statement. + * + * Exec uses context.Background internally; to specify the context, use + * ExecContext. */ - contentLanguage: string + exec(...args: any[]): Result + } + interface Stmt { /** - * ContentType is the MIME type of the blob. It will not be empty. - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type + * QueryContext executes a prepared query statement with the given arguments + * and returns the query results as a *Rows. */ - contentType: string + queryContext(ctx: context.Context, ...args: any[]): (Rows | undefined) + } + interface Stmt { /** - * Metadata holds key/value pairs associated with the blob. - * Keys are guaranteed to be in lowercase, even if the backend service - * has case-sensitive keys (although note that Metadata written via - * this package will always be lowercased). If there are duplicate - * case-insensitive keys (e.g., "foo" and "FOO"), only one value - * will be kept, and it is undefined which one. + * Query executes a prepared query statement with the given arguments + * and returns the query results as a *Rows. + * + * Query uses context.Background internally; to specify the context, use + * QueryContext. */ - metadata: _TygojaDict + query(...args: any[]): (Rows | undefined) + } + interface Stmt { /** - * CreateTime is the time the blob was created, if available. If not available, - * CreateTime will be the zero time. + * QueryRowContext executes a prepared query statement with the given arguments. + * If an error occurs during the execution of the statement, that error will + * be returned by a call to Scan on the returned *Row, which is always non-nil. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. */ - createTime: time.Time + queryRowContext(ctx: context.Context, ...args: any[]): (Row | undefined) + } + interface Stmt { /** - * ModTime is the time the blob was last modified. + * QueryRow executes a prepared query statement with the given arguments. + * If an error occurs during the execution of the statement, that error will + * be returned by a call to Scan on the returned *Row, which is always non-nil. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. + * + * Example usage: + * + * var name string + * err := nameByUseridStmt.QueryRow(id).Scan(&name) + * + * QueryRow uses context.Background internally; to specify the context, use + * QueryRowContext. */ - modTime: time.Time + queryRow(...args: any[]): (Row | undefined) + } + interface Stmt { /** - * Size is the size of the blob's content in bytes. + * Close closes the statement. */ - size: number + close(): void + } + /** + * Rows is the result of a query. Its cursor starts before the first row + * of the result set. Use Next to advance from row to row. + */ + interface Rows { + } + interface Rows { /** - * MD5 is an MD5 hash of the blob contents or nil if not available. + * Next prepares the next result row for reading with the Scan method. It + * returns true on success, or false if there is no next result row or an error + * happened while preparing it. Err should be consulted to distinguish between + * the two cases. + * + * Every call to Scan, even the first one, must be preceded by a call to Next. */ - md5: string + next(): boolean + } + interface Rows { /** - * ETag for the blob; see https://en.wikipedia.org/wiki/HTTP_ETag. + * NextResultSet prepares the next result set for reading. It reports whether + * there is further result sets, or false if there is no further result set + * or if there is an error advancing to it. The Err method should be consulted + * to distinguish between the two cases. + * + * After calling NextResultSet, the Next method should always be called before + * scanning. If there are further result sets they may not have rows in the result + * set. */ - eTag: string + nextResultSet(): boolean } - interface Attributes { + interface Rows { /** - * As converts i to driver-specific types. - * See https://gocloud.dev/concepts/as/ for background information, the "As" - * examples in this package for examples, and the driver package - * documentation for the specific types supported for that driver. + * Err returns the error, if any, that was encountered during iteration. + * Err may be called after an explicit or implicit Close. */ - as(i: { - }): boolean + err(): void } - /** - * ListObject represents a single blob returned from List. - */ - interface ListObject { + interface Rows { /** - * Key is the key for this blob. + * Columns returns the column names. + * Columns returns an error if the rows are closed. */ - key: string + columns(): Array + } + interface Rows { /** - * ModTime is the time the blob was last modified. + * ColumnTypes returns column information such as column type, length, + * and nullable. Some information may not be available from some drivers. */ - modTime: time.Time + columnTypes(): Array<(ColumnType | undefined)> + } + interface Rows { /** - * Size is the size of the blob's content in bytes. + * Scan copies the columns in the current row into the values pointed + * at by dest. The number of values in dest must be the same as the + * number of columns in Rows. + * + * Scan converts columns read from the database into the following + * common Go types and special types provided by the sql package: + * + * ``` + * *string + * *[]byte + * *int, *int8, *int16, *int32, *int64 + * *uint, *uint8, *uint16, *uint32, *uint64 + * *bool + * *float32, *float64 + * *interface{} + * *RawBytes + * *Rows (cursor value) + * any type implementing Scanner (see Scanner docs) + * ``` + * + * In the most simple case, if the type of the value from the source + * column is an integer, bool or string type T and dest is of type *T, + * Scan simply assigns the value through the pointer. + * + * Scan also converts between string and numeric types, as long as no + * information would be lost. While Scan stringifies all numbers + * scanned from numeric database columns into *string, scans into + * numeric types are checked for overflow. For example, a float64 with + * value 300 or a string with value "300" can scan into a uint16, but + * not into a uint8, though float64(255) or "255" can scan into a + * uint8. One exception is that scans of some float64 numbers to + * strings may lose information when stringifying. In general, scan + * floating point columns into *float64. + * + * If a dest argument has type *[]byte, Scan saves in that argument a + * copy of the corresponding data. The copy is owned by the caller and + * can be modified and held indefinitely. The copy can be avoided by + * using an argument of type *RawBytes instead; see the documentation + * for RawBytes for restrictions on its use. + * + * If an argument has type *interface{}, Scan copies the value + * provided by the underlying driver without conversion. When scanning + * from a source value of type []byte to *interface{}, a copy of the + * slice is made and the caller owns the result. + * + * Source values of type time.Time may be scanned into values of type + * *time.Time, *interface{}, *string, or *[]byte. When converting to + * the latter two, time.RFC3339Nano is used. + * + * Source values of type bool may be scanned into types *bool, + * *interface{}, *string, *[]byte, or *RawBytes. + * + * For scanning into *bool, the source may be true, false, 1, 0, or + * string inputs parseable by strconv.ParseBool. + * + * Scan can also convert a cursor returned from a query, such as + * "select cursor(select * from my_table) from dual", into a + * *Rows value that can itself be scanned from. The parent + * select query will close any cursor *Rows if the parent *Rows is closed. + * + * If any of the first arguments implementing Scanner returns an error, + * that error will be wrapped in the returned error */ - size: number + scan(...dest: any[]): void + } + interface Rows { /** - * MD5 is an MD5 hash of the blob contents or nil if not available. + * Close closes the Rows, preventing further enumeration. If Next is called + * and returns false and there are no further result sets, + * the Rows are closed automatically and it will suffice to check the + * result of Err. Close is idempotent and does not affect the result of Err. */ - md5: string + close(): void + } + /** + * A Result summarizes an executed SQL command. + */ + interface Result { /** - * IsDir indicates that this result represents a "directory" in the - * hierarchical namespace, ending in ListOptions.Delimiter. Key can be - * passed as ListOptions.Prefix to list items in the "directory". - * Fields other than Key and IsDir will not be set if IsDir is true. + * LastInsertId returns the integer generated by the database + * in response to a command. Typically this will be from an + * "auto increment" column when inserting a new row. Not all + * databases support this feature, and the syntax of such + * statements varies. */ - isDir: boolean - } - interface ListObject { + lastInsertId(): number /** - * As converts i to driver-specific types. - * See https://gocloud.dev/concepts/as/ for background information, the "As" - * examples in this package for examples, and the driver package - * documentation for the specific types supported for that driver. + * RowsAffected returns the number of rows affected by an + * update, insert, or delete. Not every database or database + * driver may support this. */ - as(i: { - }): boolean + rowsAffected(): number } } @@ -10209,11 +10319,91 @@ namespace types { } } -/** - * Package schema implements custom Schema and SchemaField datatypes - * for handling the Collection schema definitions. - */ -namespace schema { +namespace settings { + // @ts-ignore + import validation = ozzo_validation + /** + * Settings defines common app configuration options. + */ + interface Settings { + meta: MetaConfig + logs: LogsConfig + smtp: SmtpConfig + s3: S3Config + backups: BackupsConfig + adminAuthToken: TokenConfig + adminPasswordResetToken: TokenConfig + adminFileToken: TokenConfig + recordAuthToken: TokenConfig + recordPasswordResetToken: TokenConfig + recordEmailChangeToken: TokenConfig + recordVerificationToken: TokenConfig + recordFileToken: TokenConfig + /** + * Deprecated: Will be removed in v0.9+ + */ + emailAuth: EmailAuthConfig + googleAuth: AuthProviderConfig + facebookAuth: AuthProviderConfig + githubAuth: AuthProviderConfig + gitlabAuth: AuthProviderConfig + discordAuth: AuthProviderConfig + twitterAuth: AuthProviderConfig + microsoftAuth: AuthProviderConfig + spotifyAuth: AuthProviderConfig + kakaoAuth: AuthProviderConfig + twitchAuth: AuthProviderConfig + stravaAuth: AuthProviderConfig + giteeAuth: AuthProviderConfig + livechatAuth: AuthProviderConfig + giteaAuth: AuthProviderConfig + oidcAuth: AuthProviderConfig + oidc2Auth: AuthProviderConfig + oidc3Auth: AuthProviderConfig + appleAuth: AuthProviderConfig + instagramAuth: AuthProviderConfig + vkAuth: AuthProviderConfig + yandexAuth: AuthProviderConfig + } + interface Settings { + /** + * Validate makes Settings validatable by implementing [validation.Validatable] interface. + */ + validate(): void + } + interface Settings { + /** + * Merge merges `other` settings into the current one. + */ + merge(other: Settings): void + } + interface Settings { + /** + * Clone creates a new deep copy of the current settings. + */ + clone(): (Settings | undefined) + } + interface Settings { + /** + * RedactClone creates a new deep copy of the current settings, + * while replacing the secret values with `******`. + */ + redactClone(): (Settings | undefined) + } + interface Settings { + /** + * NamedAuthProviderConfigs returns a map with all registered OAuth2 + * provider configurations (indexed by their name identifier). + */ + namedAuthProviderConfigs(): _TygojaDict + } +} + +/** + * Package schema implements custom Schema and SchemaField datatypes + * for handling the Collection schema definitions. + */ +namespace schema { // @ts-ignore import validation = ozzo_validation /** @@ -10319,8 +10509,8 @@ namespace schema { * Package models implements all PocketBase DB models and DTOs. */ namespace models { - type _subWQYXM = BaseModel - interface Admin extends _subWQYXM { + type _subdmgOs = BaseModel + interface Admin extends _subdmgOs { avatar: number email: string tokenKey: string @@ -10355,8 +10545,8 @@ namespace models { } // @ts-ignore import validation = ozzo_validation - type _subtLWLo = BaseModel - interface Collection extends _subtLWLo { + type _subeSSGc = BaseModel + interface Collection extends _subeSSGc { name: string type: string system: boolean @@ -10449,8 +10639,8 @@ namespace models { */ setOptions(typedOptions: any): void } - type _subxqZIj = BaseModel - interface ExternalAuth extends _subxqZIj { + type _subLmHDW = BaseModel + interface ExternalAuth extends _subLmHDW { collectionId: string recordId: string provider: string @@ -10459,8 +10649,8 @@ namespace models { interface ExternalAuth { tableName(): string } - type _subNqaNo = BaseModel - interface Record extends _subNqaNo { + type _subNCIjT = BaseModel + interface Record extends _subNCIjT { } interface Record { /** @@ -10858,348 +11048,159 @@ namespace models { } } -namespace auth { - /** - * AuthUser defines a standardized oauth2 user data structure. - */ - interface AuthUser { - id: string - name: string - username: string - email: string - avatarUrl: string - rawUser: _TygojaDict - accessToken: string - refreshToken: string - } - /** - * Provider defines a common interface for an OAuth2 client. - */ - interface Provider { +/** + * Package daos handles common PocketBase DB model manipulations. + * + * Think of daos as DB repository and service layer in one. + */ +namespace daos { + interface Dao { /** - * Scopes returns the context associated with the provider (if any). + * AdminQuery returns a new Admin select query. */ - context(): context.Context + adminQuery(): (dbx.SelectQuery | undefined) + } + interface Dao { /** - * SetContext assigns the specified context to the current provider. + * FindAdminById finds the admin with the provided id. */ - setContext(ctx: context.Context): void + findAdminById(id: string): (models.Admin | undefined) + } + interface Dao { /** - * Scopes returns the provider access permissions that will be requested. + * FindAdminByEmail finds the admin with the provided email address. */ - scopes(): Array + findAdminByEmail(email: string): (models.Admin | undefined) + } + interface Dao { /** - * SetScopes sets the provider access permissions that will be requested later. + * FindAdminByToken finds the admin associated with the provided JWT token. + * + * Returns an error if the JWT token is invalid or expired. */ - setScopes(scopes: Array): void + findAdminByToken(token: string, baseTokenKey: string): (models.Admin | undefined) + } + interface Dao { /** - * ClientId returns the provider client's app ID. + * TotalAdmins returns the number of existing admin records. */ - clientId(): string + totalAdmins(): number + } + interface Dao { /** - * SetClientId sets the provider client's ID. + * IsAdminEmailUnique checks if the provided email address is not + * already in use by other admins. */ - setClientId(clientId: string): void + isAdminEmailUnique(email: string, ...excludeIds: string[]): boolean + } + interface Dao { /** - * ClientSecret returns the provider client's app secret. + * DeleteAdmin deletes the provided Admin model. + * + * Returns an error if there is only 1 admin. */ - clientSecret(): string + deleteAdmin(admin: models.Admin): void + } + interface Dao { /** - * SetClientSecret sets the provider client's app secret. + * SaveAdmin upserts the provided Admin model. */ - setClientSecret(secret: string): void + saveAdmin(admin: models.Admin): void + } + /** + * Dao handles various db operations. + * + * You can think of Dao as a repository and service layer in one. + */ + interface Dao { /** - * RedirectUrl returns the end address to redirect the user - * going through the OAuth flow. + * MaxLockRetries specifies the default max "database is locked" auto retry attempts. */ - redirectUrl(): string + maxLockRetries: number /** - * SetRedirectUrl sets the provider's RedirectUrl. + * ModelQueryTimeout is the default max duration of a running ModelQuery(). + * + * This field has no effect if an explicit query context is already specified. */ - setRedirectUrl(url: string): void + modelQueryTimeout: time.Duration /** - * AuthUrl returns the provider's authorization service url. + * write hooks */ - authUrl(): string + beforeCreateFunc: (eventDao: Dao, m: models.Model, action: () => void) => void + afterCreateFunc: (eventDao: Dao, m: models.Model) => void + beforeUpdateFunc: (eventDao: Dao, m: models.Model, action: () => void) => void + afterUpdateFunc: (eventDao: Dao, m: models.Model) => void + beforeDeleteFunc: (eventDao: Dao, m: models.Model, action: () => void) => void + afterDeleteFunc: (eventDao: Dao, m: models.Model) => void + } + interface Dao { /** - * SetAuthUrl sets the provider's AuthUrl. + * DB returns the default dao db builder (*dbx.DB or *dbx.TX). + * + * Currently the default db builder is dao.concurrentDB but that may change in the future. */ - setAuthUrl(url: string): void + db(): dbx.Builder + } + interface Dao { /** - * TokenUrl returns the provider's token exchange service url. + * ConcurrentDB returns the dao concurrent (aka. multiple open connections) + * db builder (*dbx.DB or *dbx.TX). + * + * In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance. */ - tokenUrl(): string + concurrentDB(): dbx.Builder + } + interface Dao { /** - * SetTokenUrl sets the provider's TokenUrl. + * NonconcurrentDB returns the dao nonconcurrent (aka. single open connection) + * db builder (*dbx.DB or *dbx.TX). + * + * In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance. */ - setTokenUrl(url: string): void + nonconcurrentDB(): dbx.Builder + } + interface Dao { /** - * UserApiUrl returns the provider's user info api url. + * Clone returns a new Dao with the same configuration options as the current one. */ - userApiUrl(): string + clone(): (Dao | undefined) + } + interface Dao { /** - * SetUserApiUrl sets the provider's UserApiUrl. + * WithoutHooks returns a new Dao with the same configuration options + * as the current one, but without create/update/delete hooks. */ - setUserApiUrl(url: string): void + withoutHooks(): (Dao | undefined) + } + interface Dao { /** - * Client returns an http client using the provided token. + * ModelQuery creates a new preconfigured select query with preset + * SELECT, FROM and other common fields based on the provided model. */ - client(token: oauth2.Token): (any | undefined) + modelQuery(m: models.Model): (dbx.SelectQuery | undefined) + } + interface Dao { /** - * BuildAuthUrl returns a URL to the provider's consent page - * that asks for permissions for the required scopes explicitly. + * FindById finds a single db record with the specified id and + * scans the result into m. */ - buildAuthUrl(state: string, ...opts: oauth2.AuthCodeOption[]): string + findById(m: models.Model, id: string): void + } + interface Dao { /** - * FetchToken converts an authorization code to token. + * RunInTransaction wraps fn into a transaction. + * + * It is safe to nest RunInTransaction calls as long as you use the txDao. */ - fetchToken(code: string, ...opts: oauth2.AuthCodeOption[]): (oauth2.Token | undefined) + runInTransaction(fn: (txDao: Dao) => void): void + } + interface Dao { /** - * FetchRawUserData requests and marshalizes into `result` the - * the OAuth user api response. + * Delete deletes the provided model. */ - fetchRawUserData(token: oauth2.Token): string - /** - * FetchAuthUser is similar to FetchRawUserData, but normalizes and - * marshalizes the user api response into a standardized AuthUser struct. - */ - fetchAuthUser(token: oauth2.Token): (AuthUser | undefined) - } -} - -namespace settings { - // @ts-ignore - import validation = ozzo_validation - /** - * Settings defines common app configuration options. - */ - interface Settings { - meta: MetaConfig - logs: LogsConfig - smtp: SmtpConfig - s3: S3Config - backups: BackupsConfig - adminAuthToken: TokenConfig - adminPasswordResetToken: TokenConfig - adminFileToken: TokenConfig - recordAuthToken: TokenConfig - recordPasswordResetToken: TokenConfig - recordEmailChangeToken: TokenConfig - recordVerificationToken: TokenConfig - recordFileToken: TokenConfig - /** - * Deprecated: Will be removed in v0.9+ - */ - emailAuth: EmailAuthConfig - googleAuth: AuthProviderConfig - facebookAuth: AuthProviderConfig - githubAuth: AuthProviderConfig - gitlabAuth: AuthProviderConfig - discordAuth: AuthProviderConfig - twitterAuth: AuthProviderConfig - microsoftAuth: AuthProviderConfig - spotifyAuth: AuthProviderConfig - kakaoAuth: AuthProviderConfig - twitchAuth: AuthProviderConfig - stravaAuth: AuthProviderConfig - giteeAuth: AuthProviderConfig - livechatAuth: AuthProviderConfig - giteaAuth: AuthProviderConfig - oidcAuth: AuthProviderConfig - oidc2Auth: AuthProviderConfig - oidc3Auth: AuthProviderConfig - appleAuth: AuthProviderConfig - instagramAuth: AuthProviderConfig - vkAuth: AuthProviderConfig - yandexAuth: AuthProviderConfig - } - interface Settings { - /** - * Validate makes Settings validatable by implementing [validation.Validatable] interface. - */ - validate(): void - } - interface Settings { - /** - * Merge merges `other` settings into the current one. - */ - merge(other: Settings): void - } - interface Settings { - /** - * Clone creates a new deep copy of the current settings. - */ - clone(): (Settings | undefined) - } - interface Settings { - /** - * RedactClone creates a new deep copy of the current settings, - * while replacing the secret values with `******`. - */ - redactClone(): (Settings | undefined) - } - interface Settings { - /** - * NamedAuthProviderConfigs returns a map with all registered OAuth2 - * provider configurations (indexed by their name identifier). - */ - namedAuthProviderConfigs(): _TygojaDict - } -} - -/** - * Package daos handles common PocketBase DB model manipulations. - * - * Think of daos as DB repository and service layer in one. - */ -namespace daos { - interface Dao { - /** - * AdminQuery returns a new Admin select query. - */ - adminQuery(): (dbx.SelectQuery | undefined) - } - interface Dao { - /** - * FindAdminById finds the admin with the provided id. - */ - findAdminById(id: string): (models.Admin | undefined) - } - interface Dao { - /** - * FindAdminByEmail finds the admin with the provided email address. - */ - findAdminByEmail(email: string): (models.Admin | undefined) - } - interface Dao { - /** - * FindAdminByToken finds the admin associated with the provided JWT token. - * - * Returns an error if the JWT token is invalid or expired. - */ - findAdminByToken(token: string, baseTokenKey: string): (models.Admin | undefined) - } - interface Dao { - /** - * TotalAdmins returns the number of existing admin records. - */ - totalAdmins(): number - } - interface Dao { - /** - * IsAdminEmailUnique checks if the provided email address is not - * already in use by other admins. - */ - isAdminEmailUnique(email: string, ...excludeIds: string[]): boolean - } - interface Dao { - /** - * DeleteAdmin deletes the provided Admin model. - * - * Returns an error if there is only 1 admin. - */ - deleteAdmin(admin: models.Admin): void - } - interface Dao { - /** - * SaveAdmin upserts the provided Admin model. - */ - saveAdmin(admin: models.Admin): void - } - /** - * Dao handles various db operations. - * - * You can think of Dao as a repository and service layer in one. - */ - interface Dao { - /** - * MaxLockRetries specifies the default max "database is locked" auto retry attempts. - */ - maxLockRetries: number - /** - * ModelQueryTimeout is the default max duration of a running ModelQuery(). - * - * This field has no effect if an explicit query context is already specified. - */ - modelQueryTimeout: time.Duration - /** - * write hooks - */ - beforeCreateFunc: (eventDao: Dao, m: models.Model) => void - afterCreateFunc: (eventDao: Dao, m: models.Model) => void - beforeUpdateFunc: (eventDao: Dao, m: models.Model) => void - afterUpdateFunc: (eventDao: Dao, m: models.Model) => void - beforeDeleteFunc: (eventDao: Dao, m: models.Model) => void - afterDeleteFunc: (eventDao: Dao, m: models.Model) => void - } - interface Dao { - /** - * DB returns the default dao db builder (*dbx.DB or *dbx.TX). - * - * Currently the default db builder is dao.concurrentDB but that may change in the future. - */ - db(): dbx.Builder - } - interface Dao { - /** - * ConcurrentDB returns the dao concurrent (aka. multiple open connections) - * db builder (*dbx.DB or *dbx.TX). - * - * In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance. - */ - concurrentDB(): dbx.Builder - } - interface Dao { - /** - * NonconcurrentDB returns the dao nonconcurrent (aka. single open connection) - * db builder (*dbx.DB or *dbx.TX). - * - * In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance. - */ - nonconcurrentDB(): dbx.Builder - } - interface Dao { - /** - * Clone returns a new Dao with the same configuration options as the current one. - */ - clone(): (Dao | undefined) - } - interface Dao { - /** - * WithoutHooks returns a new Dao with the same configuration options - * as the current one, but without create/update/delete hooks. - */ - withoutHooks(): (Dao | undefined) - } - interface Dao { - /** - * ModelQuery creates a new preconfigured select query with preset - * SELECT, FROM and other common fields based on the provided model. - */ - modelQuery(m: models.Model): (dbx.SelectQuery | undefined) - } - interface Dao { - /** - * FindById finds a single db record with the specified id and - * scans the result into m. - */ - findById(m: models.Model, id: string): void - } - interface Dao { - /** - * RunInTransaction wraps fn into a transaction. - * - * It is safe to nest RunInTransaction calls as long as you use the txDao. - */ - runInTransaction(fn: (txDao: Dao) => void): void - } - interface Dao { - /** - * Delete deletes the provided model. - */ - delete(m: models.Model): void - } - interface Dao { + delete(m: models.Model): void + } + interface Dao { /** * Save persists the provided model in the database. * @@ -13441,835 +13442,447 @@ namespace cobra { } interface Command { /** - * Parent returns a commands parent command. - */ - parent(): (Command | undefined) - } - interface Command { - /** - * RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. - */ - registerFlagCompletionFunc(flagName: string, f: (cmd: Command, args: Array, toComplete: string) => [Array, ShellCompDirective]): void - } - interface Command { - /** - * InitDefaultCompletionCmd adds a default 'completion' command to c. - * This function will do nothing if any of the following is true: - * 1- the feature has been explicitly disabled by the program, - * 2- c has no subcommands (to avoid creating one), - * 3- c already has a 'completion' command provided by the program. - */ - initDefaultCompletionCmd(): void - } - interface Command { - /** - * GenFishCompletion generates fish completion file and writes to the passed writer. - */ - genFishCompletion(w: io.Writer, includeDesc: boolean): void - } - interface Command { - /** - * GenFishCompletionFile generates fish completion file. - */ - genFishCompletionFile(filename: string, includeDesc: boolean): void - } - interface Command { - /** - * MarkFlagsRequiredTogether marks the given flags with annotations so that Cobra errors - * if the command is invoked with a subset (but not all) of the given flags. - */ - markFlagsRequiredTogether(...flagNames: string[]): void - } - interface Command { - /** - * MarkFlagsMutuallyExclusive marks the given flags with annotations so that Cobra errors - * if the command is invoked with more than one flag from the given set of flags. - */ - markFlagsMutuallyExclusive(...flagNames: string[]): void - } - interface Command { - /** - * ValidateFlagGroups validates the mutuallyExclusive/requiredAsGroup logic and returns the - * first error encountered. - */ - validateFlagGroups(): void - } - interface Command { - /** - * GenPowerShellCompletionFile generates powershell completion file without descriptions. - */ - genPowerShellCompletionFile(filename: string): void - } - interface Command { - /** - * GenPowerShellCompletion generates powershell completion file without descriptions - * and writes it to the passed writer. - */ - genPowerShellCompletion(w: io.Writer): void - } - interface Command { - /** - * GenPowerShellCompletionFileWithDesc generates powershell completion file with descriptions. - */ - genPowerShellCompletionFileWithDesc(filename: string): void - } - interface Command { - /** - * GenPowerShellCompletionWithDesc generates powershell completion file with descriptions - * and writes it to the passed writer. - */ - genPowerShellCompletionWithDesc(w: io.Writer): void - } - interface Command { - /** - * MarkFlagRequired instructs the various shell completion implementations to - * prioritize the named flag when performing completion, - * and causes your command to report an error if invoked without the flag. - */ - markFlagRequired(name: string): void - } - interface Command { - /** - * MarkPersistentFlagRequired instructs the various shell completion implementations to - * prioritize the named persistent flag when performing completion, - * and causes your command to report an error if invoked without the flag. - */ - markPersistentFlagRequired(name: string): void - } - interface Command { - /** - * MarkFlagFilename instructs the various shell completion implementations to - * limit completions for the named flag to the specified file extensions. - */ - markFlagFilename(name: string, ...extensions: string[]): void - } - interface Command { - /** - * MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. - * The bash completion script will call the bash function f for the flag. - * - * This will only work for bash completion. - * It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows - * to register a Go function which will work across all shells. - */ - markFlagCustom(name: string, f: string): void - } - interface Command { - /** - * MarkPersistentFlagFilename instructs the various shell completion - * implementations to limit completions for the named persistent flag to the - * specified file extensions. - */ - markPersistentFlagFilename(name: string, ...extensions: string[]): void - } - interface Command { - /** - * MarkFlagDirname instructs the various shell completion implementations to - * limit completions for the named flag to directory names. - */ - markFlagDirname(name: string): void - } - interface Command { - /** - * MarkPersistentFlagDirname instructs the various shell completion - * implementations to limit completions for the named persistent flag to - * directory names. - */ - markPersistentFlagDirname(name: string): void - } - interface Command { - /** - * GenZshCompletionFile generates zsh completion file including descriptions. - */ - genZshCompletionFile(filename: string): void - } - interface Command { - /** - * GenZshCompletion generates zsh completion file including descriptions - * and writes it to the passed writer. - */ - genZshCompletion(w: io.Writer): void - } - interface Command { - /** - * GenZshCompletionFileNoDesc generates zsh completion file without descriptions. - */ - genZshCompletionFileNoDesc(filename: string): void - } - interface Command { - /** - * GenZshCompletionNoDesc generates zsh completion file without descriptions - * and writes it to the passed writer. - */ - genZshCompletionNoDesc(w: io.Writer): void - } - interface Command { - /** - * MarkZshCompPositionalArgumentFile only worked for zsh and its behavior was - * not consistent with Bash completion. It has therefore been disabled. - * Instead, when no other completion is specified, file completion is done by - * default for every argument. One can disable file completion on a per-argument - * basis by using ValidArgsFunction and ShellCompDirectiveNoFileComp. - * To achieve file extension filtering, one can use ValidArgsFunction and - * ShellCompDirectiveFilterFileExt. - * - * Deprecated - */ - markZshCompPositionalArgumentFile(argPosition: number, ...patterns: string[]): void - } - interface Command { - /** - * MarkZshCompPositionalArgumentWords only worked for zsh. It has therefore - * been disabled. - * To achieve the same behavior across all shells, one can use - * ValidArgs (for the first argument only) or ValidArgsFunction for - * any argument (can include the first one also). - * - * Deprecated - */ - markZshCompPositionalArgumentWords(argPosition: number, ...words: string[]): void - } -} - -/** - * Package syscall contains an interface to the low-level operating system - * primitives. The details vary depending on the underlying system, and - * by default, godoc will display the syscall documentation for the current - * system. If you want godoc to display syscall documentation for another - * system, set $GOOS and $GOARCH to the desired system. For example, if - * you want to view documentation for freebsd/arm on linux/amd64, set $GOOS - * to freebsd and $GOARCH to arm. - * The primary use of syscall is inside other packages that provide a more - * portable interface to the system, such as "os", "time" and "net". Use - * those packages rather than this one if you can. - * For details of the functions and data types in this package consult - * the manuals for the appropriate operating system. - * These calls return err == nil to indicate success; otherwise - * err is an operating system error describing the failure. - * On most systems, that error has type syscall.Errno. - * - * Deprecated: this package is locked down. Callers should use the - * corresponding package in the golang.org/x/sys repository instead. - * That is also where updates required by new systems or versions - * should be applied. See https://golang.org/s/go1.4-syscall for more - * information. - */ -namespace syscall { - /** - * SysProcIDMap holds Container ID to Host ID mappings used for User Namespaces in Linux. - * See user_namespaces(7). - */ - interface SysProcIDMap { - containerID: number // Container ID. - hostID: number // Host ID. - size: number // Size. - } - // @ts-ignore - import errorspkg = errors - /** - * Credential holds user and group identities to be assumed - * by a child process started by StartProcess. - */ - interface Credential { - uid: number // User ID. - gid: number // Group ID. - groups: Array // Supplementary group IDs. - noSetGroups: boolean // If true, don't set supplementary groups - } - /** - * A Signal is a number describing a process signal. - * It implements the os.Signal interface. - */ - interface Signal extends Number{} - interface Signal { - signal(): void - } - interface Signal { - string(): string - } -} - -/** - * Package time provides functionality for measuring and displaying time. - * - * The calendrical calculations always assume a Gregorian calendar, with - * no leap seconds. - * - * Monotonic Clocks - * - * Operating systems provide both a “wall clock,” which is subject to - * changes for clock synchronization, and a “monotonic clock,” which is - * not. The general rule is that the wall clock is for telling time and - * the monotonic clock is for measuring time. Rather than split the API, - * in this package the Time returned by time.Now contains both a wall - * clock reading and a monotonic clock reading; later time-telling - * operations use the wall clock reading, but later time-measuring - * operations, specifically comparisons and subtractions, use the - * monotonic clock reading. - * - * For example, this code always computes a positive elapsed time of - * approximately 20 milliseconds, even if the wall clock is changed during - * the operation being timed: - * - * ``` - * start := time.Now() - * ... operation that takes 20 milliseconds ... - * t := time.Now() - * elapsed := t.Sub(start) - * ``` - * - * Other idioms, such as time.Since(start), time.Until(deadline), and - * time.Now().Before(deadline), are similarly robust against wall clock - * resets. - * - * The rest of this section gives the precise details of how operations - * use monotonic clocks, but understanding those details is not required - * to use this package. - * - * The Time returned by time.Now contains a monotonic clock reading. - * If Time t has a monotonic clock reading, t.Add adds the same duration to - * both the wall clock and monotonic clock readings to compute the result. - * Because t.AddDate(y, m, d), t.Round(d), and t.Truncate(d) are wall time - * computations, they always strip any monotonic clock reading from their results. - * Because t.In, t.Local, and t.UTC are used for their effect on the interpretation - * of the wall time, they also strip any monotonic clock reading from their results. - * The canonical way to strip a monotonic clock reading is to use t = t.Round(0). - * - * If Times t and u both contain monotonic clock readings, the operations - * t.After(u), t.Before(u), t.Equal(u), and t.Sub(u) are carried out - * using the monotonic clock readings alone, ignoring the wall clock - * readings. If either t or u contains no monotonic clock reading, these - * operations fall back to using the wall clock readings. - * - * On some systems the monotonic clock will stop if the computer goes to sleep. - * On such a system, t.Sub(u) may not accurately reflect the actual - * time that passed between t and u. - * - * Because the monotonic clock reading has no meaning outside - * the current process, the serialized forms generated by t.GobEncode, - * t.MarshalBinary, t.MarshalJSON, and t.MarshalText omit the monotonic - * clock reading, and t.Format provides no format for it. Similarly, the - * constructors time.Date, time.Parse, time.ParseInLocation, and time.Unix, - * as well as the unmarshalers t.GobDecode, t.UnmarshalBinary. - * t.UnmarshalJSON, and t.UnmarshalText always create times with - * no monotonic clock reading. - * - * Note that the Go == operator compares not just the time instant but - * also the Location and the monotonic clock reading. See the - * documentation for the Time type for a discussion of equality - * testing for Time values. - * - * For debugging, the result of t.String does include the monotonic - * clock reading if present. If t != u because of different monotonic clock readings, - * that difference will be visible when printing t.String() and u.String(). - */ -namespace time { - /** - * A Month specifies a month of the year (January = 1, ...). - */ - interface Month extends Number{} - interface Month { - /** - * String returns the English name of the month ("January", "February", ...). - */ - string(): string - } - /** - * A Weekday specifies a day of the week (Sunday = 0, ...). - */ - interface Weekday extends Number{} - interface Weekday { - /** - * String returns the English name of the day ("Sunday", "Monday", ...). - */ - string(): string - } - /** - * A Location maps time instants to the zone in use at that time. - * Typically, the Location represents the collection of time offsets - * in use in a geographical area. For many Locations the time offset varies - * depending on whether daylight savings time is in use at the time instant. - */ - interface Location { - } - interface Location { - /** - * String returns a descriptive name for the time zone information, - * corresponding to the name argument to LoadLocation or FixedZone. - */ - string(): string - } -} - -/** - * Package context defines the Context type, which carries deadlines, - * cancellation signals, and other request-scoped values across API boundaries - * and between processes. - * - * Incoming requests to a server should create a Context, and outgoing - * calls to servers should accept a Context. The chain of function - * calls between them must propagate the Context, optionally replacing - * it with a derived Context created using WithCancel, WithDeadline, - * WithTimeout, or WithValue. When a Context is canceled, all - * Contexts derived from it are also canceled. - * - * The WithCancel, WithDeadline, and WithTimeout functions take a - * Context (the parent) and return a derived Context (the child) and a - * CancelFunc. Calling the CancelFunc cancels the child and its - * children, removes the parent's reference to the child, and stops - * any associated timers. Failing to call the CancelFunc leaks the - * child and its children until the parent is canceled or the timer - * fires. The go vet tool checks that CancelFuncs are used on all - * control-flow paths. - * - * Programs that use Contexts should follow these rules to keep interfaces - * consistent across packages and enable static analysis tools to check context - * propagation: - * - * Do not store Contexts inside a struct type; instead, pass a Context - * explicitly to each function that needs it. The Context should be the first - * parameter, typically named ctx: - * - * ``` - * func DoSomething(ctx context.Context, arg Arg) error { - * // ... use ctx ... - * } - * ``` - * - * Do not pass a nil Context, even if a function permits it. Pass context.TODO - * if you are unsure about which Context to use. - * - * Use context Values only for request-scoped data that transits processes and - * APIs, not for passing optional parameters to functions. - * - * The same Context may be passed to functions running in different goroutines; - * Contexts are safe for simultaneous use by multiple goroutines. - * - * See https://blog.golang.org/context for example code for a server that uses - * Contexts. - */ -namespace context { -} - -/** - * Package io provides basic interfaces to I/O primitives. - * Its primary job is to wrap existing implementations of such primitives, - * such as those in package os, into shared public interfaces that - * abstract the functionality, plus some other related primitives. - * - * Because these interfaces and primitives wrap lower-level operations with - * various implementations, unless otherwise informed clients should not - * assume they are safe for parallel execution. - */ -namespace io { - /** - * ReadCloser is the interface that groups the basic Read and Close methods. - */ - interface ReadCloser { - } - /** - * WriteCloser is the interface that groups the basic Write and Close methods. - */ - interface WriteCloser { - } -} - -/** - * Package fs defines basic interfaces to a file system. - * A file system can be provided by the host operating system - * but also by other packages. - */ -namespace fs { -} - -/** - * Package net provides a portable interface for network I/O, including - * TCP/IP, UDP, domain name resolution, and Unix domain sockets. - * - * Although the package provides access to low-level networking - * primitives, most clients will need only the basic interface provided - * by the Dial, Listen, and Accept functions and the associated - * Conn and Listener interfaces. The crypto/tls package uses - * the same interfaces and similar Dial and Listen functions. - * - * The Dial function connects to a server: - * - * ``` - * conn, err := net.Dial("tcp", "golang.org:80") - * if err != nil { - * // handle error - * } - * fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") - * status, err := bufio.NewReader(conn).ReadString('\n') - * // ... - * ``` - * - * The Listen function creates servers: - * - * ``` - * ln, err := net.Listen("tcp", ":8080") - * if err != nil { - * // handle error - * } - * for { - * conn, err := ln.Accept() - * if err != nil { - * // handle error - * } - * go handleConnection(conn) - * } - * ``` - * - * Name Resolution - * - * The method for resolving domain names, whether indirectly with functions like Dial - * or directly with functions like LookupHost and LookupAddr, varies by operating system. - * - * On Unix systems, the resolver has two options for resolving names. - * It can use a pure Go resolver that sends DNS requests directly to the servers - * listed in /etc/resolv.conf, or it can use a cgo-based resolver that calls C - * library routines such as getaddrinfo and getnameinfo. - * - * By default the pure Go resolver is used, because a blocked DNS request consumes - * only a goroutine, while a blocked C call consumes an operating system thread. - * When cgo is available, the cgo-based resolver is used instead under a variety of - * conditions: on systems that do not let programs make direct DNS requests (OS X), - * when the LOCALDOMAIN environment variable is present (even if empty), - * when the RES_OPTIONS or HOSTALIASES environment variable is non-empty, - * when the ASR_CONFIG environment variable is non-empty (OpenBSD only), - * when /etc/resolv.conf or /etc/nsswitch.conf specify the use of features that the - * Go resolver does not implement, and when the name being looked up ends in .local - * or is an mDNS name. - * - * The resolver decision can be overridden by setting the netdns value of the - * GODEBUG environment variable (see package runtime) to go or cgo, as in: - * - * ``` - * export GODEBUG=netdns=go # force pure Go resolver - * export GODEBUG=netdns=cgo # force cgo resolver - * ``` - * - * The decision can also be forced while building the Go source tree - * by setting the netgo or netcgo build tag. - * - * A numeric netdns setting, as in GODEBUG=netdns=1, causes the resolver - * to print debugging information about its decisions. - * To force a particular resolver while also printing debugging information, - * join the two settings by a plus sign, as in GODEBUG=netdns=go+1. - * - * On Plan 9, the resolver always accesses /net/cs and /net/dns. - * - * On Windows, the resolver always uses C library functions, such as GetAddrInfo and DnsQuery. - */ -namespace net { - /** - * Conn is a generic stream-oriented network connection. - * - * Multiple goroutines may invoke methods on a Conn simultaneously. - */ - interface Conn { - /** - * Read reads data from the connection. - * Read can be made to time out and return an error after a fixed - * time limit; see SetDeadline and SetReadDeadline. + * Parent returns a commands parent command. */ - read(b: string): number + parent(): (Command | undefined) + } + interface Command { /** - * Write writes data to the connection. - * Write can be made to time out and return an error after a fixed - * time limit; see SetDeadline and SetWriteDeadline. + * RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. */ - write(b: string): number + registerFlagCompletionFunc(flagName: string, f: (cmd: Command, args: Array, toComplete: string) => [Array, ShellCompDirective]): void + } + interface Command { /** - * Close closes the connection. - * Any blocked Read or Write operations will be unblocked and return errors. + * InitDefaultCompletionCmd adds a default 'completion' command to c. + * This function will do nothing if any of the following is true: + * 1- the feature has been explicitly disabled by the program, + * 2- c has no subcommands (to avoid creating one), + * 3- c already has a 'completion' command provided by the program. */ - close(): void + initDefaultCompletionCmd(): void + } + interface Command { /** - * LocalAddr returns the local network address, if known. + * GenFishCompletion generates fish completion file and writes to the passed writer. */ - localAddr(): Addr + genFishCompletion(w: io.Writer, includeDesc: boolean): void + } + interface Command { /** - * RemoteAddr returns the remote network address, if known. + * GenFishCompletionFile generates fish completion file. */ - remoteAddr(): Addr + genFishCompletionFile(filename: string, includeDesc: boolean): void + } + interface Command { /** - * SetDeadline sets the read and write deadlines associated - * with the connection. It is equivalent to calling both - * SetReadDeadline and SetWriteDeadline. - * - * A deadline is an absolute time after which I/O operations - * fail instead of blocking. The deadline applies to all future - * and pending I/O, not just the immediately following call to - * Read or Write. After a deadline has been exceeded, the - * connection can be refreshed by setting a deadline in the future. - * - * If the deadline is exceeded a call to Read or Write or to other - * I/O methods will return an error that wraps os.ErrDeadlineExceeded. - * This can be tested using errors.Is(err, os.ErrDeadlineExceeded). - * The error's Timeout method will return true, but note that there - * are other possible errors for which the Timeout method will - * return true even if the deadline has not been exceeded. - * - * An idle timeout can be implemented by repeatedly extending - * the deadline after successful Read or Write calls. - * - * A zero value for t means I/O operations will not time out. + * MarkFlagsRequiredTogether marks the given flags with annotations so that Cobra errors + * if the command is invoked with a subset (but not all) of the given flags. */ - setDeadline(t: time.Time): void + markFlagsRequiredTogether(...flagNames: string[]): void + } + interface Command { /** - * SetReadDeadline sets the deadline for future Read calls - * and any currently-blocked Read call. - * A zero value for t means Read will not time out. + * MarkFlagsMutuallyExclusive marks the given flags with annotations so that Cobra errors + * if the command is invoked with more than one flag from the given set of flags. */ - setReadDeadline(t: time.Time): void + markFlagsMutuallyExclusive(...flagNames: string[]): void + } + interface Command { /** - * SetWriteDeadline sets the deadline for future Write calls - * and any currently-blocked Write call. - * Even if write times out, it may return n > 0, indicating that - * some of the data was successfully written. - * A zero value for t means Write will not time out. + * ValidateFlagGroups validates the mutuallyExclusive/requiredAsGroup logic and returns the + * first error encountered. */ - setWriteDeadline(t: time.Time): void + validateFlagGroups(): void } - /** - * A Listener is a generic network listener for stream-oriented protocols. - * - * Multiple goroutines may invoke methods on a Listener simultaneously. - */ - interface Listener { + interface Command { /** - * Accept waits for and returns the next connection to the listener. + * GenPowerShellCompletionFile generates powershell completion file without descriptions. */ - accept(): Conn + genPowerShellCompletionFile(filename: string): void + } + interface Command { /** - * Close closes the listener. - * Any blocked Accept operations will be unblocked and return errors. + * GenPowerShellCompletion generates powershell completion file without descriptions + * and writes it to the passed writer. */ - close(): void + genPowerShellCompletion(w: io.Writer): void + } + interface Command { /** - * Addr returns the listener's network address. + * GenPowerShellCompletionFileWithDesc generates powershell completion file with descriptions. */ - addr(): Addr + genPowerShellCompletionFileWithDesc(filename: string): void } -} - -/** - * Package sql provides a generic interface around SQL (or SQL-like) - * databases. - * - * The sql package must be used in conjunction with a database driver. - * See https://golang.org/s/sqldrivers for a list of drivers. - * - * Drivers that do not support context cancellation will not return until - * after the query is completed. - * - * For usage examples, see the wiki page at - * https://golang.org/s/sqlwiki. - */ -namespace sql { - /** - * IsolationLevel is the transaction isolation level used in TxOptions. - */ - interface IsolationLevel extends Number{} - interface IsolationLevel { + interface Command { /** - * String returns the name of the transaction isolation level. + * GenPowerShellCompletionWithDesc generates powershell completion file with descriptions + * and writes it to the passed writer. */ - string(): string + genPowerShellCompletionWithDesc(w: io.Writer): void } - /** - * DBStats contains database statistics. - */ - interface DBStats { - maxOpenConnections: number // Maximum number of open connections to the database. + interface Command { /** - * Pool Status + * MarkFlagRequired instructs the various shell completion implementations to + * prioritize the named flag when performing completion, + * and causes your command to report an error if invoked without the flag. */ - openConnections: number // The number of established connections both in use and idle. - inUse: number // The number of connections currently in use. - idle: number // The number of idle connections. + markFlagRequired(name: string): void + } + interface Command { /** - * Counters + * MarkPersistentFlagRequired instructs the various shell completion implementations to + * prioritize the named persistent flag when performing completion, + * and causes your command to report an error if invoked without the flag. */ - waitCount: number // The total number of connections waited for. - waitDuration: time.Duration // The total time blocked waiting for a new connection. - maxIdleClosed: number // The total number of connections closed due to SetMaxIdleConns. - maxIdleTimeClosed: number // The total number of connections closed due to SetConnMaxIdleTime. - maxLifetimeClosed: number // The total number of connections closed due to SetConnMaxLifetime. + markPersistentFlagRequired(name: string): void } - /** - * Conn represents a single database connection rather than a pool of database - * connections. Prefer running queries from DB unless there is a specific - * need for a continuous single database connection. - * - * A Conn must call Close to return the connection to the database pool - * and may do so concurrently with a running query. - * - * After a call to Close, all operations on the - * connection fail with ErrConnDone. - */ - interface Conn { + interface Command { + /** + * MarkFlagFilename instructs the various shell completion implementations to + * limit completions for the named flag to the specified file extensions. + */ + markFlagFilename(name: string, ...extensions: string[]): void } - interface Conn { + interface Command { /** - * PingContext verifies the connection to the database is still alive. + * MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. + * The bash completion script will call the bash function f for the flag. + * + * This will only work for bash completion. + * It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows + * to register a Go function which will work across all shells. */ - pingContext(ctx: context.Context): void + markFlagCustom(name: string, f: string): void } - interface Conn { + interface Command { /** - * ExecContext executes a query without returning any rows. - * The args are for any placeholder parameters in the query. + * MarkPersistentFlagFilename instructs the various shell completion + * implementations to limit completions for the named persistent flag to the + * specified file extensions. */ - execContext(ctx: context.Context, query: string, ...args: any[]): Result + markPersistentFlagFilename(name: string, ...extensions: string[]): void } - interface Conn { + interface Command { /** - * QueryContext executes a query that returns rows, typically a SELECT. - * The args are for any placeholder parameters in the query. + * MarkFlagDirname instructs the various shell completion implementations to + * limit completions for the named flag to directory names. */ - queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) + markFlagDirname(name: string): void } - interface Conn { + interface Command { /** - * QueryRowContext executes a query that is expected to return at most one row. - * QueryRowContext always returns a non-nil value. Errors are deferred until - * Row's Scan method is called. - * If the query selects no rows, the *Row's Scan will return ErrNoRows. - * Otherwise, the *Row's Scan scans the first selected row and discards - * the rest. + * MarkPersistentFlagDirname instructs the various shell completion + * implementations to limit completions for the named persistent flag to + * directory names. */ - queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) + markPersistentFlagDirname(name: string): void } - interface Conn { + interface Command { /** - * PrepareContext creates a prepared statement for later queries or executions. - * Multiple queries or executions may be run concurrently from the - * returned statement. - * The caller must call the statement's Close method - * when the statement is no longer needed. - * - * The provided context is used for the preparation of the statement, not for the - * execution of the statement. + * GenZshCompletionFile generates zsh completion file including descriptions. */ - prepareContext(ctx: context.Context, query: string): (Stmt | undefined) + genZshCompletionFile(filename: string): void } - interface Conn { + interface Command { /** - * Raw executes f exposing the underlying driver connection for the - * duration of f. The driverConn must not be used outside of f. - * - * Once f returns and err is not driver.ErrBadConn, the Conn will continue to be usable - * until Conn.Close is called. + * GenZshCompletion generates zsh completion file including descriptions + * and writes it to the passed writer. + */ + genZshCompletion(w: io.Writer): void + } + interface Command { + /** + * GenZshCompletionFileNoDesc generates zsh completion file without descriptions. + */ + genZshCompletionFileNoDesc(filename: string): void + } + interface Command { + /** + * GenZshCompletionNoDesc generates zsh completion file without descriptions + * and writes it to the passed writer. */ - raw(f: (driverConn: any) => void): void + genZshCompletionNoDesc(w: io.Writer): void } - interface Conn { + interface Command { /** - * BeginTx starts a transaction. - * - * The provided context is used until the transaction is committed or rolled back. - * If the context is canceled, the sql package will roll back - * the transaction. Tx.Commit will return an error if the context provided to - * BeginTx is canceled. + * MarkZshCompPositionalArgumentFile only worked for zsh and its behavior was + * not consistent with Bash completion. It has therefore been disabled. + * Instead, when no other completion is specified, file completion is done by + * default for every argument. One can disable file completion on a per-argument + * basis by using ValidArgsFunction and ShellCompDirectiveNoFileComp. + * To achieve file extension filtering, one can use ValidArgsFunction and + * ShellCompDirectiveFilterFileExt. * - * The provided TxOptions is optional and may be nil if defaults should be used. - * If a non-default isolation level is used that the driver doesn't support, - * an error will be returned. + * Deprecated */ - beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined) + markZshCompPositionalArgumentFile(argPosition: number, ...patterns: string[]): void } - interface Conn { + interface Command { /** - * Close returns the connection to the connection pool. - * All operations after a Close will return with ErrConnDone. - * Close is safe to call concurrently with other operations and will - * block until all other operations finish. It may be useful to first - * cancel any used context and then call close directly after. + * MarkZshCompPositionalArgumentWords only worked for zsh. It has therefore + * been disabled. + * To achieve the same behavior across all shells, one can use + * ValidArgs (for the first argument only) or ValidArgsFunction for + * any argument (can include the first one also). + * + * Deprecated */ - close(): void + markZshCompPositionalArgumentWords(argPosition: number, ...words: string[]): void } +} + +/** + * Package syscall contains an interface to the low-level operating system + * primitives. The details vary depending on the underlying system, and + * by default, godoc will display the syscall documentation for the current + * system. If you want godoc to display syscall documentation for another + * system, set $GOOS and $GOARCH to the desired system. For example, if + * you want to view documentation for freebsd/arm on linux/amd64, set $GOOS + * to freebsd and $GOARCH to arm. + * The primary use of syscall is inside other packages that provide a more + * portable interface to the system, such as "os", "time" and "net". Use + * those packages rather than this one if you can. + * For details of the functions and data types in this package consult + * the manuals for the appropriate operating system. + * These calls return err == nil to indicate success; otherwise + * err is an operating system error describing the failure. + * On most systems, that error has type syscall.Errno. + * + * Deprecated: this package is locked down. Callers should use the + * corresponding package in the golang.org/x/sys repository instead. + * That is also where updates required by new systems or versions + * should be applied. See https://golang.org/s/go1.4-syscall for more + * information. + */ +namespace syscall { /** - * ColumnType contains the name and type of a column. + * SysProcIDMap holds Container ID to Host ID mappings used for User Namespaces in Linux. + * See user_namespaces(7). */ - interface ColumnType { + interface SysProcIDMap { + containerID: number // Container ID. + hostID: number // Host ID. + size: number // Size. } - interface ColumnType { - /** - * Name returns the name or alias of the column. - */ - name(): string + // @ts-ignore + import errorspkg = errors + /** + * Credential holds user and group identities to be assumed + * by a child process started by StartProcess. + */ + interface Credential { + uid: number // User ID. + gid: number // Group ID. + groups: Array // Supplementary group IDs. + noSetGroups: boolean // If true, don't set supplementary groups } - interface ColumnType { - /** - * Length returns the column type length for variable length column types such - * as text and binary field types. If the type length is unbounded the value will - * be math.MaxInt64 (any database limits will still apply). - * If the column type is not variable length, such as an int, or if not supported - * by the driver ok is false. - */ - length(): [number, boolean] + /** + * A Signal is a number describing a process signal. + * It implements the os.Signal interface. + */ + interface Signal extends Number{} + interface Signal { + signal(): void } - interface ColumnType { - /** - * DecimalSize returns the scale and precision of a decimal type. - * If not applicable or if not supported ok is false. - */ - decimalSize(): [number, boolean] + interface Signal { + string(): string } - interface ColumnType { +} + +/** + * Package time provides functionality for measuring and displaying time. + * + * The calendrical calculations always assume a Gregorian calendar, with + * no leap seconds. + * + * Monotonic Clocks + * + * Operating systems provide both a “wall clock,” which is subject to + * changes for clock synchronization, and a “monotonic clock,” which is + * not. The general rule is that the wall clock is for telling time and + * the monotonic clock is for measuring time. Rather than split the API, + * in this package the Time returned by time.Now contains both a wall + * clock reading and a monotonic clock reading; later time-telling + * operations use the wall clock reading, but later time-measuring + * operations, specifically comparisons and subtractions, use the + * monotonic clock reading. + * + * For example, this code always computes a positive elapsed time of + * approximately 20 milliseconds, even if the wall clock is changed during + * the operation being timed: + * + * ``` + * start := time.Now() + * ... operation that takes 20 milliseconds ... + * t := time.Now() + * elapsed := t.Sub(start) + * ``` + * + * Other idioms, such as time.Since(start), time.Until(deadline), and + * time.Now().Before(deadline), are similarly robust against wall clock + * resets. + * + * The rest of this section gives the precise details of how operations + * use monotonic clocks, but understanding those details is not required + * to use this package. + * + * The Time returned by time.Now contains a monotonic clock reading. + * If Time t has a monotonic clock reading, t.Add adds the same duration to + * both the wall clock and monotonic clock readings to compute the result. + * Because t.AddDate(y, m, d), t.Round(d), and t.Truncate(d) are wall time + * computations, they always strip any monotonic clock reading from their results. + * Because t.In, t.Local, and t.UTC are used for their effect on the interpretation + * of the wall time, they also strip any monotonic clock reading from their results. + * The canonical way to strip a monotonic clock reading is to use t = t.Round(0). + * + * If Times t and u both contain monotonic clock readings, the operations + * t.After(u), t.Before(u), t.Equal(u), and t.Sub(u) are carried out + * using the monotonic clock readings alone, ignoring the wall clock + * readings. If either t or u contains no monotonic clock reading, these + * operations fall back to using the wall clock readings. + * + * On some systems the monotonic clock will stop if the computer goes to sleep. + * On such a system, t.Sub(u) may not accurately reflect the actual + * time that passed between t and u. + * + * Because the monotonic clock reading has no meaning outside + * the current process, the serialized forms generated by t.GobEncode, + * t.MarshalBinary, t.MarshalJSON, and t.MarshalText omit the monotonic + * clock reading, and t.Format provides no format for it. Similarly, the + * constructors time.Date, time.Parse, time.ParseInLocation, and time.Unix, + * as well as the unmarshalers t.GobDecode, t.UnmarshalBinary. + * t.UnmarshalJSON, and t.UnmarshalText always create times with + * no monotonic clock reading. + * + * Note that the Go == operator compares not just the time instant but + * also the Location and the monotonic clock reading. See the + * documentation for the Time type for a discussion of equality + * testing for Time values. + * + * For debugging, the result of t.String does include the monotonic + * clock reading if present. If t != u because of different monotonic clock readings, + * that difference will be visible when printing t.String() and u.String(). + */ +namespace time { + /** + * A Month specifies a month of the year (January = 1, ...). + */ + interface Month extends Number{} + interface Month { /** - * ScanType returns a Go type suitable for scanning into using Rows.Scan. - * If a driver does not support this property ScanType will return - * the type of an empty interface. + * String returns the English name of the month ("January", "February", ...). */ - scanType(): any + string(): string } - interface ColumnType { + /** + * A Weekday specifies a day of the week (Sunday = 0, ...). + */ + interface Weekday extends Number{} + interface Weekday { /** - * Nullable reports whether the column may be null. - * If a driver does not support this property ok will be false. + * String returns the English name of the day ("Sunday", "Monday", ...). */ - nullable(): boolean + string(): string } - interface ColumnType { + /** + * A Location maps time instants to the zone in use at that time. + * Typically, the Location represents the collection of time offsets + * in use in a geographical area. For many Locations the time offset varies + * depending on whether daylight savings time is in use at the time instant. + */ + interface Location { + } + interface Location { /** - * DatabaseTypeName returns the database system name of the column type. If an empty - * string is returned, then the driver type name is not supported. - * Consult your driver documentation for a list of driver data types. Length specifiers - * are not included. - * Common type names include "VARCHAR", "TEXT", "NVARCHAR", "DECIMAL", "BOOL", - * "INT", and "BIGINT". + * String returns a descriptive name for the time zone information, + * corresponding to the name argument to LoadLocation or FixedZone. */ - databaseTypeName(): string + string(): string } +} + +/** + * Package context defines the Context type, which carries deadlines, + * cancellation signals, and other request-scoped values across API boundaries + * and between processes. + * + * Incoming requests to a server should create a Context, and outgoing + * calls to servers should accept a Context. The chain of function + * calls between them must propagate the Context, optionally replacing + * it with a derived Context created using WithCancel, WithDeadline, + * WithTimeout, or WithValue. When a Context is canceled, all + * Contexts derived from it are also canceled. + * + * The WithCancel, WithDeadline, and WithTimeout functions take a + * Context (the parent) and return a derived Context (the child) and a + * CancelFunc. Calling the CancelFunc cancels the child and its + * children, removes the parent's reference to the child, and stops + * any associated timers. Failing to call the CancelFunc leaks the + * child and its children until the parent is canceled or the timer + * fires. The go vet tool checks that CancelFuncs are used on all + * control-flow paths. + * + * Programs that use Contexts should follow these rules to keep interfaces + * consistent across packages and enable static analysis tools to check context + * propagation: + * + * Do not store Contexts inside a struct type; instead, pass a Context + * explicitly to each function that needs it. The Context should be the first + * parameter, typically named ctx: + * + * ``` + * func DoSomething(ctx context.Context, arg Arg) error { + * // ... use ctx ... + * } + * ``` + * + * Do not pass a nil Context, even if a function permits it. Pass context.TODO + * if you are unsure about which Context to use. + * + * Use context Values only for request-scoped data that transits processes and + * APIs, not for passing optional parameters to functions. + * + * The same Context may be passed to functions running in different goroutines; + * Contexts are safe for simultaneous use by multiple goroutines. + * + * See https://blog.golang.org/context for example code for a server that uses + * Contexts. + */ +namespace context { +} + +/** + * Package io provides basic interfaces to I/O primitives. + * Its primary job is to wrap existing implementations of such primitives, + * such as those in package os, into shared public interfaces that + * abstract the functionality, plus some other related primitives. + * + * Because these interfaces and primitives wrap lower-level operations with + * various implementations, unless otherwise informed clients should not + * assume they are safe for parallel execution. + */ +namespace io { /** - * Row is the result of calling QueryRow to select a single row. + * ReadCloser is the interface that groups the basic Read and Close methods. */ - interface Row { - } - interface Row { - /** - * Scan copies the columns from the matched row into the values - * pointed at by dest. See the documentation on Rows.Scan for details. - * If more than one row matches the query, - * Scan uses the first row and discards the rest. If no row matches - * the query, Scan returns ErrNoRows. - */ - scan(...dest: any[]): void + interface ReadCloser { } - interface Row { - /** - * Err provides a way for wrapping packages to check for - * query errors without calling Scan. - * Err returns the error, if any, that was encountered while running the query. - * If this error is not nil, this error will also be returned from Scan. - */ - err(): void + /** + * WriteCloser is the interface that groups the basic Write and Close methods. + */ + interface WriteCloser { } } +/** + * Package fs defines basic interfaces to a file system. + * A file system can be provided by the host operating system + * but also by other packages. + */ +namespace fs { +} + /** * Package url parses URLs and implements query escaping. */ @@ -14436,56 +14049,228 @@ namespace url { * may be relative or absolute. Parse returns nil, err on parse * failure, otherwise its return value is the same as ResolveReference. */ - parse(ref: string): (URL | undefined) - } - interface URL { + parse(ref: string): (URL | undefined) + } + interface URL { + /** + * ResolveReference resolves a URI reference to an absolute URI from + * an absolute base URI u, per RFC 3986 Section 5.2. The URI reference + * may be relative or absolute. ResolveReference always returns a new + * URL instance, even if the returned URL is identical to either the + * base or reference. If ref is an absolute URL, then ResolveReference + * ignores base and returns a copy of ref. + */ + resolveReference(ref: URL): (URL | undefined) + } + interface URL { + /** + * Query parses RawQuery and returns the corresponding values. + * It silently discards malformed value pairs. + * To check errors use ParseQuery. + */ + query(): Values + } + interface URL { + /** + * RequestURI returns the encoded path?query or opaque?query + * string that would be used in an HTTP request for u. + */ + requestURI(): string + } + interface URL { + /** + * Hostname returns u.Host, stripping any valid port number if present. + * + * If the result is enclosed in square brackets, as literal IPv6 addresses are, + * the square brackets are removed from the result. + */ + hostname(): string + } + interface URL { + /** + * Port returns the port part of u.Host, without the leading colon. + * + * If u.Host doesn't contain a valid numeric port, Port returns an empty string. + */ + port(): string + } + interface URL { + marshalBinary(): string + } + interface URL { + unmarshalBinary(text: string): void + } +} + +/** + * Package net provides a portable interface for network I/O, including + * TCP/IP, UDP, domain name resolution, and Unix domain sockets. + * + * Although the package provides access to low-level networking + * primitives, most clients will need only the basic interface provided + * by the Dial, Listen, and Accept functions and the associated + * Conn and Listener interfaces. The crypto/tls package uses + * the same interfaces and similar Dial and Listen functions. + * + * The Dial function connects to a server: + * + * ``` + * conn, err := net.Dial("tcp", "golang.org:80") + * if err != nil { + * // handle error + * } + * fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") + * status, err := bufio.NewReader(conn).ReadString('\n') + * // ... + * ``` + * + * The Listen function creates servers: + * + * ``` + * ln, err := net.Listen("tcp", ":8080") + * if err != nil { + * // handle error + * } + * for { + * conn, err := ln.Accept() + * if err != nil { + * // handle error + * } + * go handleConnection(conn) + * } + * ``` + * + * Name Resolution + * + * The method for resolving domain names, whether indirectly with functions like Dial + * or directly with functions like LookupHost and LookupAddr, varies by operating system. + * + * On Unix systems, the resolver has two options for resolving names. + * It can use a pure Go resolver that sends DNS requests directly to the servers + * listed in /etc/resolv.conf, or it can use a cgo-based resolver that calls C + * library routines such as getaddrinfo and getnameinfo. + * + * By default the pure Go resolver is used, because a blocked DNS request consumes + * only a goroutine, while a blocked C call consumes an operating system thread. + * When cgo is available, the cgo-based resolver is used instead under a variety of + * conditions: on systems that do not let programs make direct DNS requests (OS X), + * when the LOCALDOMAIN environment variable is present (even if empty), + * when the RES_OPTIONS or HOSTALIASES environment variable is non-empty, + * when the ASR_CONFIG environment variable is non-empty (OpenBSD only), + * when /etc/resolv.conf or /etc/nsswitch.conf specify the use of features that the + * Go resolver does not implement, and when the name being looked up ends in .local + * or is an mDNS name. + * + * The resolver decision can be overridden by setting the netdns value of the + * GODEBUG environment variable (see package runtime) to go or cgo, as in: + * + * ``` + * export GODEBUG=netdns=go # force pure Go resolver + * export GODEBUG=netdns=cgo # force cgo resolver + * ``` + * + * The decision can also be forced while building the Go source tree + * by setting the netgo or netcgo build tag. + * + * A numeric netdns setting, as in GODEBUG=netdns=1, causes the resolver + * to print debugging information about its decisions. + * To force a particular resolver while also printing debugging information, + * join the two settings by a plus sign, as in GODEBUG=netdns=go+1. + * + * On Plan 9, the resolver always accesses /net/cs and /net/dns. + * + * On Windows, the resolver always uses C library functions, such as GetAddrInfo and DnsQuery. + */ +namespace net { + /** + * Conn is a generic stream-oriented network connection. + * + * Multiple goroutines may invoke methods on a Conn simultaneously. + */ + interface Conn { + /** + * Read reads data from the connection. + * Read can be made to time out and return an error after a fixed + * time limit; see SetDeadline and SetReadDeadline. + */ + read(b: string): number + /** + * Write writes data to the connection. + * Write can be made to time out and return an error after a fixed + * time limit; see SetDeadline and SetWriteDeadline. + */ + write(b: string): number + /** + * Close closes the connection. + * Any blocked Read or Write operations will be unblocked and return errors. + */ + close(): void + /** + * LocalAddr returns the local network address, if known. + */ + localAddr(): Addr + /** + * RemoteAddr returns the remote network address, if known. + */ + remoteAddr(): Addr + /** + * SetDeadline sets the read and write deadlines associated + * with the connection. It is equivalent to calling both + * SetReadDeadline and SetWriteDeadline. + * + * A deadline is an absolute time after which I/O operations + * fail instead of blocking. The deadline applies to all future + * and pending I/O, not just the immediately following call to + * Read or Write. After a deadline has been exceeded, the + * connection can be refreshed by setting a deadline in the future. + * + * If the deadline is exceeded a call to Read or Write or to other + * I/O methods will return an error that wraps os.ErrDeadlineExceeded. + * This can be tested using errors.Is(err, os.ErrDeadlineExceeded). + * The error's Timeout method will return true, but note that there + * are other possible errors for which the Timeout method will + * return true even if the deadline has not been exceeded. + * + * An idle timeout can be implemented by repeatedly extending + * the deadline after successful Read or Write calls. + * + * A zero value for t means I/O operations will not time out. + */ + setDeadline(t: time.Time): void /** - * ResolveReference resolves a URI reference to an absolute URI from - * an absolute base URI u, per RFC 3986 Section 5.2. The URI reference - * may be relative or absolute. ResolveReference always returns a new - * URL instance, even if the returned URL is identical to either the - * base or reference. If ref is an absolute URL, then ResolveReference - * ignores base and returns a copy of ref. + * SetReadDeadline sets the deadline for future Read calls + * and any currently-blocked Read call. + * A zero value for t means Read will not time out. */ - resolveReference(ref: URL): (URL | undefined) - } - interface URL { + setReadDeadline(t: time.Time): void /** - * Query parses RawQuery and returns the corresponding values. - * It silently discards malformed value pairs. - * To check errors use ParseQuery. + * SetWriteDeadline sets the deadline for future Write calls + * and any currently-blocked Write call. + * Even if write times out, it may return n > 0, indicating that + * some of the data was successfully written. + * A zero value for t means Write will not time out. */ - query(): Values + setWriteDeadline(t: time.Time): void } - interface URL { + /** + * A Listener is a generic network listener for stream-oriented protocols. + * + * Multiple goroutines may invoke methods on a Listener simultaneously. + */ + interface Listener { /** - * RequestURI returns the encoded path?query or opaque?query - * string that would be used in an HTTP request for u. + * Accept waits for and returns the next connection to the listener. */ - requestURI(): string - } - interface URL { + accept(): Conn /** - * Hostname returns u.Host, stripping any valid port number if present. - * - * If the result is enclosed in square brackets, as literal IPv6 addresses are, - * the square brackets are removed from the result. + * Close closes the listener. + * Any blocked Accept operations will be unblocked and return errors. */ - hostname(): string - } - interface URL { + close(): void /** - * Port returns the port part of u.Host, without the leading colon. - * - * If u.Host doesn't contain a valid numeric port, Port returns an empty string. + * Addr returns the listener's network address. */ - port(): string - } - interface URL { - marshalBinary(): string - } - interface URL { - unmarshalBinary(text: string): void + addr(): Addr } } @@ -15054,946 +14839,1162 @@ namespace http { } } +namespace store { + /** + * Store defines a concurrent safe in memory key-value data store. + */ + interface Store { + } + interface Store { + /** + * Reset clears the store and replaces the store data with a + * shallow copy of the provided newData. + */ + reset(newData: _TygojaDict): void + } + interface Store { + /** + * Length returns the current number of elements in the store. + */ + length(): number + } + interface Store { + /** + * RemoveAll removes all the existing store entries. + */ + removeAll(): void + } + interface Store { + /** + * Remove removes a single entry from the store. + * + * Remove does nothing if key doesn't exist in the store. + */ + remove(key: string): void + } + interface Store { + /** + * Has checks if element with the specified key exist or not. + */ + has(key: string): boolean + } + interface Store { + /** + * Get returns a single element value from the store. + * + * If key is not set, the zero T value is returned. + */ + get(key: string): T + } + interface Store { + /** + * GetAll returns a shallow copy of the current store data. + */ + getAll(): _TygojaDict + } + interface Store { + /** + * Set sets (or overwrite if already exist) a new value for key. + */ + set(key: string, value: T): void + } + interface Store { + /** + * SetIfLessThanLimit sets (or overwrite if already exist) a new value for key. + * + * This method is similar to Set() but **it will skip adding new elements** + * to the store if the store length has reached the specified limit. + * false is returned if maxAllowedElements limit is reached. + */ + setIfLessThanLimit(key: string, value: T, maxAllowedElements: number): boolean + } +} + +/** + * Package types implements some commonly used db serializable types + * like datetime, json, etc. + */ +namespace types { + /** + * DateTime represents a [time.Time] instance in UTC that is wrapped + * and serialized using the app default date layout. + */ + interface DateTime { + } + interface DateTime { + /** + * Time returns the internal [time.Time] instance. + */ + time(): time.Time + } + interface DateTime { + /** + * IsZero checks whether the current DateTime instance has zero time value. + */ + isZero(): boolean + } + interface DateTime { + /** + * String serializes the current DateTime instance into a formatted + * UTC date string. + * + * The zero value is serialized to an empty string. + */ + string(): string + } + interface DateTime { + /** + * MarshalJSON implements the [json.Marshaler] interface. + */ + marshalJSON(): string + } + interface DateTime { + /** + * UnmarshalJSON implements the [json.Unmarshaler] interface. + */ + unmarshalJSON(b: string): void + } + interface DateTime { + /** + * Value implements the [driver.Valuer] interface. + */ + value(): any + } + interface DateTime { + /** + * Scan implements [sql.Scanner] interface to scan the provided value + * into the current DateTime instance. + */ + scan(value: any): void + } +} + /** - * Package echo implements high performance, minimalist Go web framework. - * - * Example: - * - * ``` - * package main - * - * import ( - * "github.com/labstack/echo/v5" - * "github.com/labstack/echo/v5/middleware" - * "log" - * "net/http" - * ) - * - * // Handler - * func hello(c echo.Context) error { - * return c.String(http.StatusOK, "Hello, World!") - * } - * - * func main() { - * // Echo instance - * e := echo.New() - * - * // Middleware - * e.Use(middleware.Logger()) - * e.Use(middleware.Recover()) - * - * // Routes - * e.GET("/", hello) - * - * // Start server - * if err := e.Start(":8080"); err != http.ErrServerClosed { - * log.Fatal(err) - * } - * } - * ``` - * - * Learn more at https://echo.labstack.com + * Package schema implements custom Schema and SchemaField datatypes + * for handling the Collection schema definitions. */ -namespace echo { +namespace schema { + // @ts-ignore + import validation = ozzo_validation /** - * Binder is the interface that wraps the Bind method. + * SchemaField defines a single schema field structure. */ - interface Binder { - bind(c: Context, i: { - }): void + interface SchemaField { + system: boolean + id: string + name: string + type: string + required: boolean + /** + * Deprecated: This field is no-op and will be removed in future versions. + * Please use the collection.Indexes field to define a unique constraint. + */ + unique: boolean + options: any } - /** - * ServableContext is interface that Echo context implementation must implement to be usable in middleware/handlers and - * be able to be routed by Router. - */ - interface ServableContext { + interface SchemaField { /** - * Reset resets the context after request completes. It must be called along - * with `Echo#AcquireContext()` and `Echo#ReleaseContext()`. - * See `Echo#ServeHTTP()` + * ColDefinition returns the field db column type definition as string. */ - reset(r: http.Request, w: http.ResponseWriter): void + colDefinition(): string } - // @ts-ignore - import stdContext = context - /** - * JSONSerializer is the interface that encodes and decodes JSON to and from interfaces. - */ - interface JSONSerializer { - serialize(c: Context, i: { - }, indent: string): void - deserialize(c: Context, i: { - }): void + interface SchemaField { + /** + * String serializes and returns the current field as string. + */ + string(): string } - /** - * HTTPErrorHandler is a centralized HTTP error handler. - */ - interface HTTPErrorHandler {(c: Context, err: Error): void } - /** - * Validator is the interface that wraps the Validate function. - */ - interface Validator { - validate(i: { - }): void + interface SchemaField { + /** + * MarshalJSON implements the [json.Marshaler] interface. + */ + marshalJSON(): string } - /** - * Renderer is the interface that wraps the Render function. - */ - interface Renderer { - render(_arg0: io.Writer, _arg1: string, _arg2: { - }, _arg3: Context): void + interface SchemaField { + /** + * UnmarshalJSON implements the [json.Unmarshaler] interface. + * + * The schema field options are auto initialized on success. + */ + unmarshalJSON(data: string): void } - /** - * Group is a set of sub-routes for a specified route. It can be used for inner - * routes that share a common middleware or functionality that should be separate - * from the parent echo instance while still inheriting from it. - */ - interface Group { + interface SchemaField { + /** + * Validate makes `SchemaField` validatable by implementing [validation.Validatable] interface. + */ + validate(): void } - interface Group { + interface SchemaField { /** - * Use implements `Echo#Use()` for sub-routes within the Group. - * Group middlewares are not executed on request when there is no matching route found. + * InitOptions initializes the current field options based on its type. + * + * Returns error on unknown field type. */ - use(...middleware: MiddlewareFunc[]): void + initOptions(): void } - interface Group { + interface SchemaField { /** - * CONNECT implements `Echo#CONNECT()` for sub-routes within the Group. Panics on error. + * PrepareValue returns normalized and properly formatted field value. */ - connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + prepareValue(value: any): any } - interface Group { + interface SchemaField { /** - * DELETE implements `Echo#DELETE()` for sub-routes within the Group. Panics on error. + * PrepareValueWithModifier returns normalized and properly formatted field value + * by "merging" baseValue with the modifierValue based on the specified modifier (+ or -). */ - delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + prepareValueWithModifier(baseValue: any, modifier: string, modifierValue: any): any } - interface Group { +} + +/** + * Package sql provides a generic interface around SQL (or SQL-like) + * databases. + * + * The sql package must be used in conjunction with a database driver. + * See https://golang.org/s/sqldrivers for a list of drivers. + * + * Drivers that do not support context cancellation will not return until + * after the query is completed. + * + * For usage examples, see the wiki page at + * https://golang.org/s/sqlwiki. + */ +namespace sql { + /** + * IsolationLevel is the transaction isolation level used in TxOptions. + */ + interface IsolationLevel extends Number{} + interface IsolationLevel { /** - * GET implements `Echo#GET()` for sub-routes within the Group. Panics on error. + * String returns the name of the transaction isolation level. */ - get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + string(): string } - interface Group { + /** + * DBStats contains database statistics. + */ + interface DBStats { + maxOpenConnections: number // Maximum number of open connections to the database. /** - * HEAD implements `Echo#HEAD()` for sub-routes within the Group. Panics on error. + * Pool Status */ - head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + openConnections: number // The number of established connections both in use and idle. + inUse: number // The number of connections currently in use. + idle: number // The number of idle connections. + /** + * Counters + */ + waitCount: number // The total number of connections waited for. + waitDuration: time.Duration // The total time blocked waiting for a new connection. + maxIdleClosed: number // The total number of connections closed due to SetMaxIdleConns. + maxIdleTimeClosed: number // The total number of connections closed due to SetConnMaxIdleTime. + maxLifetimeClosed: number // The total number of connections closed due to SetConnMaxLifetime. } - interface Group { + /** + * Conn represents a single database connection rather than a pool of database + * connections. Prefer running queries from DB unless there is a specific + * need for a continuous single database connection. + * + * A Conn must call Close to return the connection to the database pool + * and may do so concurrently with a running query. + * + * After a call to Close, all operations on the + * connection fail with ErrConnDone. + */ + interface Conn { + } + interface Conn { /** - * OPTIONS implements `Echo#OPTIONS()` for sub-routes within the Group. Panics on error. + * PingContext verifies the connection to the database is still alive. */ - options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + pingContext(ctx: context.Context): void } - interface Group { + interface Conn { /** - * PATCH implements `Echo#PATCH()` for sub-routes within the Group. Panics on error. + * ExecContext executes a query without returning any rows. + * The args are for any placeholder parameters in the query. */ - patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + execContext(ctx: context.Context, query: string, ...args: any[]): Result } - interface Group { + interface Conn { /** - * POST implements `Echo#POST()` for sub-routes within the Group. Panics on error. + * QueryContext executes a query that returns rows, typically a SELECT. + * The args are for any placeholder parameters in the query. */ - post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined) } - interface Group { + interface Conn { /** - * PUT implements `Echo#PUT()` for sub-routes within the Group. Panics on error. + * QueryRowContext executes a query that is expected to return at most one row. + * QueryRowContext always returns a non-nil value. Errors are deferred until + * Row's Scan method is called. + * If the query selects no rows, the *Row's Scan will return ErrNoRows. + * Otherwise, the *Row's Scan scans the first selected row and discards + * the rest. */ - put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined) } - interface Group { + interface Conn { /** - * TRACE implements `Echo#TRACE()` for sub-routes within the Group. Panics on error. + * PrepareContext creates a prepared statement for later queries or executions. + * Multiple queries or executions may be run concurrently from the + * returned statement. + * The caller must call the statement's Close method + * when the statement is no longer needed. + * + * The provided context is used for the preparation of the statement, not for the + * execution of the statement. */ - trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + prepareContext(ctx: context.Context, query: string): (Stmt | undefined) } - interface Group { + interface Conn { /** - * Any implements `Echo#Any()` for sub-routes within the Group. Panics on error. + * Raw executes f exposing the underlying driver connection for the + * duration of f. The driverConn must not be used outside of f. + * + * Once f returns and err is not driver.ErrBadConn, the Conn will continue to be usable + * until Conn.Close is called. */ - any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes + raw(f: (driverConn: any) => void): void } - interface Group { + interface Conn { /** - * Match implements `Echo#Match()` for sub-routes within the Group. Panics on error. + * BeginTx starts a transaction. + * + * The provided context is used until the transaction is committed or rolled back. + * If the context is canceled, the sql package will roll back + * the transaction. Tx.Commit will return an error if the context provided to + * BeginTx is canceled. + * + * The provided TxOptions is optional and may be nil if defaults should be used. + * If a non-default isolation level is used that the driver doesn't support, + * an error will be returned. */ - match(methods: Array, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes + beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined) } - interface Group { + interface Conn { /** - * Group creates a new sub-group with prefix and optional sub-group-level middleware. - * Important! Group middlewares are only executed in case there was exact route match and not - * for 404 (not found) or 405 (method not allowed) cases. If this kind of behaviour is needed then add - * a catch-all route `/*` for the group which handler returns always 404 + * Close returns the connection to the connection pool. + * All operations after a Close will return with ErrConnDone. + * Close is safe to call concurrently with other operations and will + * block until all other operations finish. It may be useful to first + * cancel any used context and then call close directly after. */ - group(prefix: string, ...middleware: MiddlewareFunc[]): (Group | undefined) + close(): void } - interface Group { + /** + * ColumnType contains the name and type of a column. + */ + interface ColumnType { + } + interface ColumnType { /** - * Static implements `Echo#Static()` for sub-routes within the Group. + * Name returns the name or alias of the column. */ - static(pathPrefix: string): RouteInfo + name(): string } - interface Group { + interface ColumnType { /** - * StaticFS implements `Echo#StaticFS()` for sub-routes within the Group. - * - * When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary - * prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths - * including `assets/images` as their prefix. + * Length returns the column type length for variable length column types such + * as text and binary field types. If the type length is unbounded the value will + * be math.MaxInt64 (any database limits will still apply). + * If the column type is not variable length, such as an int, or if not supported + * by the driver ok is false. + */ + length(): [number, boolean] + } + interface ColumnType { + /** + * DecimalSize returns the scale and precision of a decimal type. + * If not applicable or if not supported ok is false. */ - staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo + decimalSize(): [number, boolean] } - interface Group { + interface ColumnType { /** - * FileFS implements `Echo#FileFS()` for sub-routes within the Group. + * ScanType returns a Go type suitable for scanning into using Rows.Scan. + * If a driver does not support this property ScanType will return + * the type of an empty interface. */ - fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo + scanType(): any } - interface Group { + interface ColumnType { /** - * File implements `Echo#File()` for sub-routes within the Group. Panics on error. + * Nullable reports whether the column may be null. + * If a driver does not support this property ok will be false. */ - file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo + nullable(): boolean } - interface Group { + interface ColumnType { /** - * RouteNotFound implements `Echo#RouteNotFound()` for sub-routes within the Group. - * - * Example: `g.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })` + * DatabaseTypeName returns the database system name of the column type. If an empty + * string is returned, then the driver type name is not supported. + * Consult your driver documentation for a list of driver data types. Length specifiers + * are not included. + * Common type names include "VARCHAR", "TEXT", "NVARCHAR", "DECIMAL", "BOOL", + * "INT", and "BIGINT". */ - routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo + databaseTypeName(): string } - interface Group { + /** + * Row is the result of calling QueryRow to select a single row. + */ + interface Row { + } + interface Row { /** - * Add implements `Echo#Add()` for sub-routes within the Group. Panics on error. + * Scan copies the columns from the matched row into the values + * pointed at by dest. See the documentation on Rows.Scan for details. + * If more than one row matches the query, + * Scan uses the first row and discards the rest. If no row matches + * the query, Scan returns ErrNoRows. */ - add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo + scan(...dest: any[]): void } - interface Group { + interface Row { /** - * AddRoute registers a new Routable with Router + * Err provides a way for wrapping packages to check for + * query errors without calling Scan. + * Err returns the error, if any, that was encountered while running the query. + * If this error is not nil, this error will also be returned from Scan. */ - addRoute(route: Routable): RouteInfo + err(): void } +} + +/** + * Package models implements all PocketBase DB models and DTOs. + */ +namespace models { /** - * IPExtractor is a function to extract IP addr from http.Request. - * Set appropriate one to Echo#IPExtractor. - * See https://echo.labstack.com/guide/ip-address for more details. + * Model defines an interface with common methods that all db models should have. */ - interface IPExtractor {(_arg0: http.Request): string } + interface Model { + tableName(): string + isNew(): boolean + markAsNew(): void + markAsNotNew(): void + hasId(): boolean + getId(): string + setId(id: string): void + getCreated(): types.DateTime + getUpdated(): types.DateTime + refreshId(): void + refreshCreated(): void + refreshUpdated(): void + } /** - * Logger defines the logging interface that Echo uses internally in few places. - * For logging in handlers use your own logger instance (dependency injected or package/public variable) from logging framework of your choice. + * BaseModel defines common fields and methods used by all other models. */ - interface Logger { + interface BaseModel { + id: string + created: types.DateTime + updated: types.DateTime + } + interface BaseModel { /** - * Write provides writer interface for http.Server `ErrorLog` and for logging startup messages. - * `http.Server.ErrorLog` logs errors from accepting connections, unexpected behavior from handlers, - * and underlying FileSystem errors. - * `logger` middleware will use this method to write its JSON payload. + * HasId returns whether the model has a nonzero id. */ - write(p: string): number + hasId(): boolean + } + interface BaseModel { /** - * Error logs the error + * GetId returns the model id. */ - error(err: Error): void + getId(): string } - /** - * Response wraps an http.ResponseWriter and implements its interface to be used - * by an HTTP handler to construct an HTTP response. - * See: https://golang.org/pkg/net/http/#ResponseWriter - */ - interface Response { - writer: http.ResponseWriter - status: number - size: number - committed: boolean + interface BaseModel { + /** + * SetId sets the model id to the provided string value. + */ + setId(id: string): void } - interface Response { + interface BaseModel { /** - * Header returns the header map for the writer that will be sent by - * WriteHeader. Changing the header after a call to WriteHeader (or Write) has - * no effect unless the modified headers were declared as trailers by setting - * the "Trailer" header before the call to WriteHeader (see example) - * To suppress implicit response headers, set their value to nil. - * Example: https://golang.org/pkg/net/http/#example_ResponseWriter_trailers + * MarkAsNew marks the model as "new" (aka. enforces m.IsNew() to be true). */ - header(): http.Header + markAsNew(): void } - interface Response { + interface BaseModel { /** - * Before registers a function which is called just before the response is written. + * MarkAsNotNew marks the model as "not new" (aka. enforces m.IsNew() to be false) */ - before(fn: () => void): void + markAsNotNew(): void } - interface Response { + interface BaseModel { /** - * After registers a function which is called just after the response is written. - * If the `Content-Length` is unknown, none of the after function is executed. + * IsNew indicates what type of db query (insert or update) + * should be used with the model instance. */ - after(fn: () => void): void + isNew(): boolean } - interface Response { + interface BaseModel { /** - * WriteHeader sends an HTTP response header with status code. If WriteHeader is - * not called explicitly, the first call to Write will trigger an implicit - * WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly - * used to send error codes. + * GetCreated returns the model Created datetime. */ - writeHeader(code: number): void + getCreated(): types.DateTime } - interface Response { + interface BaseModel { /** - * Write writes the data to the connection as part of an HTTP reply. + * GetUpdated returns the model Updated datetime. */ - write(b: string): number + getUpdated(): types.DateTime } - interface Response { + interface BaseModel { /** - * Flush implements the http.Flusher interface to allow an HTTP handler to flush - * buffered data to the client. - * See [http.Flusher](https://golang.org/pkg/net/http/#Flusher) + * RefreshId generates and sets a new model id. + * + * The generated id is a cryptographically random 15 characters length string. */ - flush(): void + refreshId(): void } - interface Response { + interface BaseModel { /** - * Hijack implements the http.Hijacker interface to allow an HTTP handler to - * take over the connection. - * See [http.Hijacker](https://golang.org/pkg/net/http/#Hijacker) + * RefreshCreated updates the model Created field with the current datetime. */ - hijack(): [net.Conn, (bufio.ReadWriter | undefined)] + refreshCreated(): void } - interface Response { + interface BaseModel { /** - * Unwrap returns the original http.ResponseWriter. - * ResponseController can be used to access the original http.ResponseWriter. - * See [https://go.dev/blog/go1.20] + * RefreshUpdated updates the model Updated field with the current datetime. */ - unwrap(): http.ResponseWriter + refreshUpdated(): void } - interface Routes { + interface BaseModel { /** - * Reverse reverses route to URL string by replacing path parameters with given params values. + * PostScan implements the [dbx.PostScanner] interface. + * + * It is executed right after the model was populated with the db row values. */ - reverse(name: string, ...params: { - }[]): string + postScan(): void } - interface Routes { + // @ts-ignore + import validation = ozzo_validation + /** + * CollectionBaseOptions defines the "base" Collection.Options fields. + */ + interface CollectionBaseOptions { + } + interface CollectionBaseOptions { /** - * FindByMethodPath searched for matching route info by method and path + * Validate implements [validation.Validatable] interface. */ - findByMethodPath(method: string, path: string): RouteInfo + validate(): void } - interface Routes { + /** + * CollectionAuthOptions defines the "auth" Collection.Options fields. + */ + interface CollectionAuthOptions { + manageRule?: string + allowOAuth2Auth: boolean + allowUsernameAuth: boolean + allowEmailAuth: boolean + requireEmail: boolean + exceptEmailDomains: Array + onlyEmailDomains: Array + minPasswordLength: number + } + interface CollectionAuthOptions { /** - * FilterByMethod searched for matching route info by method + * Validate implements [validation.Validatable] interface. */ - filterByMethod(method: string): Routes + validate(): void + } + /** + * CollectionViewOptions defines the "view" Collection.Options fields. + */ + interface CollectionViewOptions { + query: string + } + interface CollectionViewOptions { + /** + * Validate implements [validation.Validatable] interface. + */ + validate(): void + } + type _subSPEKf = BaseModel + interface Param extends _subSPEKf { + key: string + value: types.JsonRaw + } + interface Param { + tableName(): string + } + type _subsSZxc = BaseModel + interface Request extends _subsSZxc { + url: string + method: string + status: number + auth: string + userIp: string + remoteIp: string + referer: string + userAgent: string + meta: types.JsonMap } - interface Routes { - /** - * FilterByPath searched for matching route info by path - */ - filterByPath(path: string): Routes + interface Request { + tableName(): string } - interface Routes { + interface TableInfoRow { /** - * FilterByName searched for matching route info by name + * the `db:"pk"` tag has special semantic so we cannot rename + * the original field without specifying a custom mapper */ - filterByName(name: string): Routes + pk: number + index: number + name: string + type: string + notNull: boolean + defaultValue: types.JsonRaw } +} + +/** + * Package oauth2 provides support for making + * OAuth2 authorized and authenticated HTTP requests, + * as specified in RFC 6749. + * It can additionally grant authorization with Bearer JWT. + */ +namespace oauth2 { /** - * Router is interface for routing request contexts to registered routes. + * An AuthCodeOption is passed to Config.AuthCodeURL. + */ + interface AuthCodeOption { + } + /** + * Token represents the credentials used to authorize + * the requests to access protected resources on the OAuth 2.0 + * provider's backend. * - * Contract between Echo/Context instance and the router: - * ``` - * - all routes must be added through methods on echo.Echo instance. - * Reason: Echo instance uses RouteInfo.Params() length to allocate slice for paths parameters (see `Echo.contextPathParamAllocSize`). - * - Router must populate Context during Router.Route call with: - * - RoutableContext.SetPath - * - RoutableContext.SetRawPathParams (IMPORTANT! with same slice pointer that c.RawPathParams() returns) - * - RoutableContext.SetRouteInfo - * And optionally can set additional information to Context with RoutableContext.Set - * ``` + * Most users of this package should not access fields of Token + * directly. They're exported mostly for use by related packages + * implementing derivative OAuth2 flows. */ - interface Router { + interface Token { /** - * Add registers Routable with the Router and returns registered RouteInfo + * AccessToken is the token that authorizes and authenticates + * the requests. */ - add(routable: Routable): RouteInfo + accessToken: string /** - * Remove removes route from the Router + * TokenType is the type of token. + * The Type method returns either this or "Bearer", the default. */ - remove(method: string, path: string): void + tokenType: string /** - * Routes returns information about all registered routes + * RefreshToken is a token that's used by the application + * (as opposed to the user) to refresh the access token + * if it expires. */ - routes(): Routes + refreshToken: string /** - * Route searches Router for matching route and applies it to the given context. In case when no matching method - * was not found (405) or no matching route exists for path (404), router will return its implementation of 405/404 - * handler function. + * Expiry is the optional expiration time of the access token. + * + * If zero, TokenSource implementations will reuse the same + * token forever and RefreshToken or equivalent + * mechanisms for that TokenSource will not be used. */ - route(c: RoutableContext): HandlerFunc + expiry: time.Time } - /** - * Routable is interface for registering Route with Router. During route registration process the Router will - * convert Routable to RouteInfo with ToRouteInfo method. By creating custom implementation of Routable additional - * information about registered route can be stored in Routes (i.e. privileges used with route etc.) - */ - interface Routable { + interface Token { /** - * ToRouteInfo converts Routable to RouteInfo - * - * This method is meant to be used by Router after it parses url for path parameters, to store information about - * route just added. + * Type returns t.TokenType if non-empty, else "Bearer". */ - toRouteInfo(params: Array): RouteInfo + type(): string + } + interface Token { /** - * ToRoute converts Routable to Route which Router uses to register the method handler for path. + * SetAuthHeader sets the Authorization header to r using the access + * token in t. * - * This method is meant to be used by Router to get fields (including handler and middleware functions) needed to - * add Route to Router. + * This method is unnecessary when using Transport or an HTTP Client + * returned by this package. */ - toRoute(): Route + setAuthHeader(r: http.Request): void + } + interface Token { /** - * ForGroup recreates routable with added group prefix and group middlewares it is grouped to. - * - * Is necessary for Echo.Group to be able to add/register Routable with Router and having group prefix and group - * middlewares included in actually registered Route. + * WithExtra returns a new Token that's a clone of t, but using the + * provided raw extra map. This is only intended for use by packages + * implementing derivative OAuth2 flows. */ - forGroup(pathPrefix: string, middlewares: Array): Routable + withExtra(extra: { + }): (Token | undefined) } - /** - * Routes is collection of RouteInfo instances with various helper methods. - */ - interface Routes extends Array{} - /** - * RouteInfo describes registered route base fields. - * Method+Path pair uniquely identifies the Route. Name can have duplicates. - */ - interface RouteInfo { - method(): string - path(): string - name(): string - params(): Array + interface Token { /** - * Reverse reverses route to URL string by replacing path parameters with given params values. + * Extra returns an extra field. + * Extra fields are key-value pairs returned by the server as a + * part of the token retrieval response. */ - reverse(...params: { - }[]): string + extra(key: string): { + } + } + interface Token { + /** + * Valid reports whether t is non-nil, has an AccessToken, and is not expired. + */ + valid(): boolean } +} + +namespace mailer { /** - * PathParams is collections of PathParam instances with various helper methods + * Mailer defines a base mail client interface. */ - interface PathParams extends Array{} - interface PathParams { + interface Mailer { /** - * Get returns path parameter value for given name or default value. + * Send sends an email with the provided Message. */ - get(name: string, defaultValue: string): string + send(message: Message): void } } -namespace store { +/** + * Package echo implements high performance, minimalist Go web framework. + * + * Example: + * + * ``` + * package main + * + * import ( + * "github.com/labstack/echo/v5" + * "github.com/labstack/echo/v5/middleware" + * "log" + * "net/http" + * ) + * + * // Handler + * func hello(c echo.Context) error { + * return c.String(http.StatusOK, "Hello, World!") + * } + * + * func main() { + * // Echo instance + * e := echo.New() + * + * // Middleware + * e.Use(middleware.Logger()) + * e.Use(middleware.Recover()) + * + * // Routes + * e.GET("/", hello) + * + * // Start server + * if err := e.Start(":8080"); err != http.ErrServerClosed { + * log.Fatal(err) + * } + * } + * ``` + * + * Learn more at https://echo.labstack.com + */ +namespace echo { /** - * Store defines a concurrent safe in memory key-value data store. + * Binder is the interface that wraps the Bind method. */ - interface Store { + interface Binder { + bind(c: Context, i: { + }): void } - interface Store { + /** + * ServableContext is interface that Echo context implementation must implement to be usable in middleware/handlers and + * be able to be routed by Router. + */ + interface ServableContext { /** - * Reset clears the store and replaces the store data with a - * shallow copy of the provided newData. + * Reset resets the context after request completes. It must be called along + * with `Echo#AcquireContext()` and `Echo#ReleaseContext()`. + * See `Echo#ServeHTTP()` */ - reset(newData: _TygojaDict): void + reset(r: http.Request, w: http.ResponseWriter): void } - interface Store { - /** - * Length returns the current number of elements in the store. - */ - length(): number + // @ts-ignore + import stdContext = context + /** + * JSONSerializer is the interface that encodes and decodes JSON to and from interfaces. + */ + interface JSONSerializer { + serialize(c: Context, i: { + }, indent: string): void + deserialize(c: Context, i: { + }): void } - interface Store { - /** - * RemoveAll removes all the existing store entries. - */ - removeAll(): void + /** + * HTTPErrorHandler is a centralized HTTP error handler. + */ + interface HTTPErrorHandler {(c: Context, err: Error): void } + /** + * Validator is the interface that wraps the Validate function. + */ + interface Validator { + validate(i: { + }): void } - interface Store { - /** - * Remove removes a single entry from the store. - * - * Remove does nothing if key doesn't exist in the store. - */ - remove(key: string): void + /** + * Renderer is the interface that wraps the Render function. + */ + interface Renderer { + render(_arg0: io.Writer, _arg1: string, _arg2: { + }, _arg3: Context): void } - interface Store { - /** - * Has checks if element with the specified key exist or not. - */ - has(key: string): boolean + /** + * Group is a set of sub-routes for a specified route. It can be used for inner + * routes that share a common middleware or functionality that should be separate + * from the parent echo instance while still inheriting from it. + */ + interface Group { } - interface Store { + interface Group { /** - * Get returns a single element value from the store. - * - * If key is not set, the zero T value is returned. + * Use implements `Echo#Use()` for sub-routes within the Group. + * Group middlewares are not executed on request when there is no matching route found. */ - get(key: string): T + use(...middleware: MiddlewareFunc[]): void } - interface Store { + interface Group { /** - * GetAll returns a shallow copy of the current store data. + * CONNECT implements `Echo#CONNECT()` for sub-routes within the Group. Panics on error. */ - getAll(): _TygojaDict + connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface Store { + interface Group { /** - * Set sets (or overwrite if already exist) a new value for key. + * DELETE implements `Echo#DELETE()` for sub-routes within the Group. Panics on error. */ - set(key: string, value: T): void + delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface Store { + interface Group { /** - * SetIfLessThanLimit sets (or overwrite if already exist) a new value for key. - * - * This method is similar to Set() but **it will skip adding new elements** - * to the store if the store length has reached the specified limit. - * false is returned if maxAllowedElements limit is reached. + * GET implements `Echo#GET()` for sub-routes within the Group. Panics on error. */ - setIfLessThanLimit(key: string, value: T, maxAllowedElements: number): boolean - } -} - -/** - * Package types implements some commonly used db serializable types - * like datetime, json, etc. - */ -namespace types { - /** - * DateTime represents a [time.Time] instance in UTC that is wrapped - * and serialized using the app default date layout. - */ - interface DateTime { + get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * Time returns the internal [time.Time] instance. + * HEAD implements `Echo#HEAD()` for sub-routes within the Group. Panics on error. */ - time(): time.Time + head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * IsZero checks whether the current DateTime instance has zero time value. + * OPTIONS implements `Echo#OPTIONS()` for sub-routes within the Group. Panics on error. */ - isZero(): boolean + options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * String serializes the current DateTime instance into a formatted - * UTC date string. - * - * The zero value is serialized to an empty string. + * PATCH implements `Echo#PATCH()` for sub-routes within the Group. Panics on error. */ - string(): string + patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * MarshalJSON implements the [json.Marshaler] interface. + * POST implements `Echo#POST()` for sub-routes within the Group. Panics on error. */ - marshalJSON(): string + post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * UnmarshalJSON implements the [json.Unmarshaler] interface. + * PUT implements `Echo#PUT()` for sub-routes within the Group. Panics on error. */ - unmarshalJSON(b: string): void + put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * Value implements the [driver.Valuer] interface. + * TRACE implements `Echo#TRACE()` for sub-routes within the Group. Panics on error. */ - value(): any + trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface DateTime { + interface Group { /** - * Scan implements [sql.Scanner] interface to scan the provided value - * into the current DateTime instance. + * Any implements `Echo#Any()` for sub-routes within the Group. Panics on error. */ - scan(value: any): void + any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes } -} - -/** - * Package schema implements custom Schema and SchemaField datatypes - * for handling the Collection schema definitions. - */ -namespace schema { - // @ts-ignore - import validation = ozzo_validation - /** - * SchemaField defines a single schema field structure. - */ - interface SchemaField { - system: boolean - id: string - name: string - type: string - required: boolean + interface Group { /** - * Deprecated: This field is no-op and will be removed in future versions. - * Please use the collection.Indexes field to define a unique constraint. + * Match implements `Echo#Match()` for sub-routes within the Group. Panics on error. */ - unique: boolean - options: any + match(methods: Array, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes } - interface SchemaField { + interface Group { /** - * ColDefinition returns the field db column type definition as string. + * Group creates a new sub-group with prefix and optional sub-group-level middleware. + * Important! Group middlewares are only executed in case there was exact route match and not + * for 404 (not found) or 405 (method not allowed) cases. If this kind of behaviour is needed then add + * a catch-all route `/*` for the group which handler returns always 404 */ - colDefinition(): string + group(prefix: string, ...middleware: MiddlewareFunc[]): (Group | undefined) } - interface SchemaField { + interface Group { /** - * String serializes and returns the current field as string. + * Static implements `Echo#Static()` for sub-routes within the Group. */ - string(): string + static(pathPrefix: string): RouteInfo } - interface SchemaField { + interface Group { /** - * MarshalJSON implements the [json.Marshaler] interface. + * StaticFS implements `Echo#StaticFS()` for sub-routes within the Group. + * + * When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary + * prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths + * including `assets/images` as their prefix. */ - marshalJSON(): string + staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo } - interface SchemaField { + interface Group { /** - * UnmarshalJSON implements the [json.Unmarshaler] interface. - * - * The schema field options are auto initialized on success. + * FileFS implements `Echo#FileFS()` for sub-routes within the Group. */ - unmarshalJSON(data: string): void + fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo } - interface SchemaField { + interface Group { /** - * Validate makes `SchemaField` validatable by implementing [validation.Validatable] interface. + * File implements `Echo#File()` for sub-routes within the Group. Panics on error. */ - validate(): void + file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo } - interface SchemaField { + interface Group { /** - * InitOptions initializes the current field options based on its type. + * RouteNotFound implements `Echo#RouteNotFound()` for sub-routes within the Group. * - * Returns error on unknown field type. + * Example: `g.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })` */ - initOptions(): void + routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo } - interface SchemaField { + interface Group { /** - * PrepareValue returns normalized and properly formatted field value. + * Add implements `Echo#Add()` for sub-routes within the Group. Panics on error. */ - prepareValue(value: any): any + add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo } - interface SchemaField { + interface Group { /** - * PrepareValueWithModifier returns normalized and properly formatted field value - * by "merging" baseValue with the modifierValue based on the specified modifier (+ or -). + * AddRoute registers a new Routable with Router */ - prepareValueWithModifier(baseValue: any, modifier: string, modifierValue: any): any + addRoute(route: Routable): RouteInfo } -} - -/** - * Package models implements all PocketBase DB models and DTOs. - */ -namespace models { /** - * Model defines an interface with common methods that all db models should have. + * IPExtractor is a function to extract IP addr from http.Request. + * Set appropriate one to Echo#IPExtractor. + * See https://echo.labstack.com/guide/ip-address for more details. */ - interface Model { - tableName(): string - isNew(): boolean - markAsNew(): void - markAsNotNew(): void - hasId(): boolean - getId(): string - setId(id: string): void - getCreated(): types.DateTime - getUpdated(): types.DateTime - refreshId(): void - refreshCreated(): void - refreshUpdated(): void - } + interface IPExtractor {(_arg0: http.Request): string } /** - * BaseModel defines common fields and methods used by all other models. + * Logger defines the logging interface that Echo uses internally in few places. + * For logging in handlers use your own logger instance (dependency injected or package/public variable) from logging framework of your choice. */ - interface BaseModel { - id: string - created: types.DateTime - updated: types.DateTime - } - interface BaseModel { + interface Logger { /** - * HasId returns whether the model has a nonzero id. + * Write provides writer interface for http.Server `ErrorLog` and for logging startup messages. + * `http.Server.ErrorLog` logs errors from accepting connections, unexpected behavior from handlers, + * and underlying FileSystem errors. + * `logger` middleware will use this method to write its JSON payload. */ - hasId(): boolean - } - interface BaseModel { + write(p: string): number /** - * GetId returns the model id. + * Error logs the error */ - getId(): string + error(err: Error): void } - interface BaseModel { - /** - * SetId sets the model id to the provided string value. - */ - setId(id: string): void + /** + * Response wraps an http.ResponseWriter and implements its interface to be used + * by an HTTP handler to construct an HTTP response. + * See: https://golang.org/pkg/net/http/#ResponseWriter + */ + interface Response { + writer: http.ResponseWriter + status: number + size: number + committed: boolean } - interface BaseModel { + interface Response { /** - * MarkAsNew marks the model as "new" (aka. enforces m.IsNew() to be true). + * Header returns the header map for the writer that will be sent by + * WriteHeader. Changing the header after a call to WriteHeader (or Write) has + * no effect unless the modified headers were declared as trailers by setting + * the "Trailer" header before the call to WriteHeader (see example) + * To suppress implicit response headers, set their value to nil. + * Example: https://golang.org/pkg/net/http/#example_ResponseWriter_trailers */ - markAsNew(): void + header(): http.Header } - interface BaseModel { + interface Response { /** - * MarkAsNotNew marks the model as "not new" (aka. enforces m.IsNew() to be false) + * Before registers a function which is called just before the response is written. */ - markAsNotNew(): void + before(fn: () => void): void } - interface BaseModel { + interface Response { /** - * IsNew indicates what type of db query (insert or update) - * should be used with the model instance. + * After registers a function which is called just after the response is written. + * If the `Content-Length` is unknown, none of the after function is executed. */ - isNew(): boolean + after(fn: () => void): void } - interface BaseModel { + interface Response { /** - * GetCreated returns the model Created datetime. + * WriteHeader sends an HTTP response header with status code. If WriteHeader is + * not called explicitly, the first call to Write will trigger an implicit + * WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly + * used to send error codes. */ - getCreated(): types.DateTime + writeHeader(code: number): void } - interface BaseModel { + interface Response { /** - * GetUpdated returns the model Updated datetime. + * Write writes the data to the connection as part of an HTTP reply. */ - getUpdated(): types.DateTime + write(b: string): number } - interface BaseModel { + interface Response { /** - * RefreshId generates and sets a new model id. - * - * The generated id is a cryptographically random 15 characters length string. + * Flush implements the http.Flusher interface to allow an HTTP handler to flush + * buffered data to the client. + * See [http.Flusher](https://golang.org/pkg/net/http/#Flusher) */ - refreshId(): void + flush(): void } - interface BaseModel { + interface Response { /** - * RefreshCreated updates the model Created field with the current datetime. + * Hijack implements the http.Hijacker interface to allow an HTTP handler to + * take over the connection. + * See [http.Hijacker](https://golang.org/pkg/net/http/#Hijacker) */ - refreshCreated(): void + hijack(): [net.Conn, (bufio.ReadWriter | undefined)] } - interface BaseModel { + interface Response { /** - * RefreshUpdated updates the model Updated field with the current datetime. + * Unwrap returns the original http.ResponseWriter. + * ResponseController can be used to access the original http.ResponseWriter. + * See [https://go.dev/blog/go1.20] */ - refreshUpdated(): void + unwrap(): http.ResponseWriter } - interface BaseModel { + interface Routes { /** - * PostScan implements the [dbx.PostScanner] interface. - * - * It is executed right after the model was populated with the db row values. + * Reverse reverses route to URL string by replacing path parameters with given params values. */ - postScan(): void - } - // @ts-ignore - import validation = ozzo_validation - /** - * CollectionBaseOptions defines the "base" Collection.Options fields. - */ - interface CollectionBaseOptions { + reverse(name: string, ...params: { + }[]): string } - interface CollectionBaseOptions { + interface Routes { /** - * Validate implements [validation.Validatable] interface. + * FindByMethodPath searched for matching route info by method and path */ - validate(): void - } - /** - * CollectionAuthOptions defines the "auth" Collection.Options fields. - */ - interface CollectionAuthOptions { - manageRule?: string - allowOAuth2Auth: boolean - allowUsernameAuth: boolean - allowEmailAuth: boolean - requireEmail: boolean - exceptEmailDomains: Array - onlyEmailDomains: Array - minPasswordLength: number + findByMethodPath(method: string, path: string): RouteInfo } - interface CollectionAuthOptions { + interface Routes { /** - * Validate implements [validation.Validatable] interface. + * FilterByMethod searched for matching route info by method */ - validate(): void - } - /** - * CollectionViewOptions defines the "view" Collection.Options fields. - */ - interface CollectionViewOptions { - query: string + filterByMethod(method: string): Routes } - interface CollectionViewOptions { + interface Routes { /** - * Validate implements [validation.Validatable] interface. + * FilterByPath searched for matching route info by path */ - validate(): void - } - type _subbwihZ = BaseModel - interface Param extends _subbwihZ { - key: string - value: types.JsonRaw - } - interface Param { - tableName(): string - } - type _subqDpPo = BaseModel - interface Request extends _subqDpPo { - url: string - method: string - status: number - auth: string - userIp: string - remoteIp: string - referer: string - userAgent: string - meta: types.JsonMap - } - interface Request { - tableName(): string + filterByPath(path: string): Routes } - interface TableInfoRow { + interface Routes { /** - * the `db:"pk"` tag has special semantic so we cannot rename - * the original field without specifying a custom mapper + * FilterByName searched for matching route info by name */ - pk: number - index: number - name: string - type: string - notNull: boolean - defaultValue: types.JsonRaw - } -} - -/** - * Package oauth2 provides support for making - * OAuth2 authorized and authenticated HTTP requests, - * as specified in RFC 6749. - * It can additionally grant authorization with Bearer JWT. - */ -namespace oauth2 { - /** - * An AuthCodeOption is passed to Config.AuthCodeURL. - */ - interface AuthCodeOption { + filterByName(name: string): Routes } /** - * Token represents the credentials used to authorize - * the requests to access protected resources on the OAuth 2.0 - * provider's backend. + * Router is interface for routing request contexts to registered routes. * - * Most users of this package should not access fields of Token - * directly. They're exported mostly for use by related packages - * implementing derivative OAuth2 flows. + * Contract between Echo/Context instance and the router: + * ``` + * - all routes must be added through methods on echo.Echo instance. + * Reason: Echo instance uses RouteInfo.Params() length to allocate slice for paths parameters (see `Echo.contextPathParamAllocSize`). + * - Router must populate Context during Router.Route call with: + * - RoutableContext.SetPath + * - RoutableContext.SetRawPathParams (IMPORTANT! with same slice pointer that c.RawPathParams() returns) + * - RoutableContext.SetRouteInfo + * And optionally can set additional information to Context with RoutableContext.Set + * ``` */ - interface Token { - /** - * AccessToken is the token that authorizes and authenticates - * the requests. - */ - accessToken: string + interface Router { /** - * TokenType is the type of token. - * The Type method returns either this or "Bearer", the default. + * Add registers Routable with the Router and returns registered RouteInfo */ - tokenType: string + add(routable: Routable): RouteInfo /** - * RefreshToken is a token that's used by the application - * (as opposed to the user) to refresh the access token - * if it expires. + * Remove removes route from the Router */ - refreshToken: string + remove(method: string, path: string): void /** - * Expiry is the optional expiration time of the access token. - * - * If zero, TokenSource implementations will reuse the same - * token forever and RefreshToken or equivalent - * mechanisms for that TokenSource will not be used. + * Routes returns information about all registered routes */ - expiry: time.Time - } - interface Token { + routes(): Routes /** - * Type returns t.TokenType if non-empty, else "Bearer". + * Route searches Router for matching route and applies it to the given context. In case when no matching method + * was not found (405) or no matching route exists for path (404), router will return its implementation of 405/404 + * handler function. */ - type(): string + route(c: RoutableContext): HandlerFunc } - interface Token { + /** + * Routable is interface for registering Route with Router. During route registration process the Router will + * convert Routable to RouteInfo with ToRouteInfo method. By creating custom implementation of Routable additional + * information about registered route can be stored in Routes (i.e. privileges used with route etc.) + */ + interface Routable { /** - * SetAuthHeader sets the Authorization header to r using the access - * token in t. + * ToRouteInfo converts Routable to RouteInfo * - * This method is unnecessary when using Transport or an HTTP Client - * returned by this package. + * This method is meant to be used by Router after it parses url for path parameters, to store information about + * route just added. */ - setAuthHeader(r: http.Request): void - } - interface Token { + toRouteInfo(params: Array): RouteInfo /** - * WithExtra returns a new Token that's a clone of t, but using the - * provided raw extra map. This is only intended for use by packages - * implementing derivative OAuth2 flows. + * ToRoute converts Routable to Route which Router uses to register the method handler for path. + * + * This method is meant to be used by Router to get fields (including handler and middleware functions) needed to + * add Route to Router. */ - withExtra(extra: { - }): (Token | undefined) - } - interface Token { + toRoute(): Route /** - * Extra returns an extra field. - * Extra fields are key-value pairs returned by the server as a - * part of the token retrieval response. + * ForGroup recreates routable with added group prefix and group middlewares it is grouped to. + * + * Is necessary for Echo.Group to be able to add/register Routable with Router and having group prefix and group + * middlewares included in actually registered Route. */ - extra(key: string): { - } + forGroup(pathPrefix: string, middlewares: Array): Routable } - interface Token { + /** + * Routes is collection of RouteInfo instances with various helper methods. + */ + interface Routes extends Array{} + /** + * RouteInfo describes registered route base fields. + * Method+Path pair uniquely identifies the Route. Name can have duplicates. + */ + interface RouteInfo { + method(): string + path(): string + name(): string + params(): Array /** - * Valid reports whether t is non-nil, has an AccessToken, and is not expired. + * Reverse reverses route to URL string by replacing path parameters with given params values. */ - valid(): boolean + reverse(...params: { + }[]): string } -} - -namespace mailer { /** - * Mailer defines a base mail client interface. + * PathParams is collections of PathParam instances with various helper methods */ - interface Mailer { + interface PathParams extends Array{} + interface PathParams { /** - * Send sends an email with the provided Message. + * Get returns path parameter value for given name or default value. */ - send(message: Message): void + get(name: string, defaultValue: string): string } } @@ -16154,6 +16155,14 @@ namespace daos { } } +namespace migrate { + interface Migration { + file: string + up: (db: dbx.Builder) => void + down: (db: dbx.Builder) => void + } +} + namespace hook { /** * Hook defines a concurrent safe structure for handling event hooks @@ -16207,8 +16216,8 @@ namespace hook { * TaggedHook defines a proxy hook which register handlers that are triggered only * if the TaggedHook.tags are empty or includes at least one of the event data tag(s). */ - type _subGfash = mainHook - interface TaggedHook extends _subGfash { + type _subwyjOF = mainHook + interface TaggedHook extends _subwyjOF { } interface TaggedHook { /** @@ -16294,12 +16303,12 @@ namespace core { httpContext: echo.Context error: Error } - type _subojwUR = BaseModelEvent - interface ModelEvent extends _subojwUR { + type _subZqJWI = BaseModelEvent + interface ModelEvent extends _subZqJWI { dao?: daos.Dao } - type _subEwPrf = BaseCollectionEvent - interface MailerRecordEvent extends _subEwPrf { + type _subbnJXT = BaseCollectionEvent + interface MailerRecordEvent extends _subbnJXT { mailClient: mailer.Mailer message?: mailer.Message record?: models.Record @@ -16338,50 +16347,50 @@ namespace core { oldSettings?: settings.Settings newSettings?: settings.Settings } - type _subSETSQ = BaseCollectionEvent - interface RecordsListEvent extends _subSETSQ { + type _subBpTkL = BaseCollectionEvent + interface RecordsListEvent extends _subBpTkL { httpContext: echo.Context records: Array<(models.Record | undefined)> result?: search.Result } - type _subzUmqv = BaseCollectionEvent - interface RecordViewEvent extends _subzUmqv { + type _subeVuLo = BaseCollectionEvent + interface RecordViewEvent extends _subeVuLo { httpContext: echo.Context record?: models.Record } - type _subFQgid = BaseCollectionEvent - interface RecordCreateEvent extends _subFQgid { + type _subojWMy = BaseCollectionEvent + interface RecordCreateEvent extends _subojWMy { httpContext: echo.Context record?: models.Record uploadedFiles: _TygojaDict } - type _subGwZLY = BaseCollectionEvent - interface RecordUpdateEvent extends _subGwZLY { + type _subKFRiD = BaseCollectionEvent + interface RecordUpdateEvent extends _subKFRiD { httpContext: echo.Context record?: models.Record uploadedFiles: _TygojaDict } - type _subcalwE = BaseCollectionEvent - interface RecordDeleteEvent extends _subcalwE { + type _subrNOnb = BaseCollectionEvent + interface RecordDeleteEvent extends _subrNOnb { httpContext: echo.Context record?: models.Record } - type _subNYixL = BaseCollectionEvent - interface RecordAuthEvent extends _subNYixL { + type _subSqVvr = BaseCollectionEvent + interface RecordAuthEvent extends _subSqVvr { httpContext: echo.Context record?: models.Record token: string meta: any } - type _subOViiB = BaseCollectionEvent - interface RecordAuthWithPasswordEvent extends _subOViiB { + type _subwssdy = BaseCollectionEvent + interface RecordAuthWithPasswordEvent extends _subwssdy { httpContext: echo.Context record?: models.Record identity: string password: string } - type _submUQAY = BaseCollectionEvent - interface RecordAuthWithOAuth2Event extends _submUQAY { + type _subHmKlj = BaseCollectionEvent + interface RecordAuthWithOAuth2Event extends _subHmKlj { httpContext: echo.Context providerName: string providerClient: auth.Provider @@ -16389,49 +16398,49 @@ namespace core { oAuth2User?: auth.AuthUser isNewRecord: boolean } - type _subLcpsC = BaseCollectionEvent - interface RecordAuthRefreshEvent extends _subLcpsC { + type _subihsjG = BaseCollectionEvent + interface RecordAuthRefreshEvent extends _subihsjG { httpContext: echo.Context record?: models.Record } - type _subIjMWb = BaseCollectionEvent - interface RecordRequestPasswordResetEvent extends _subIjMWb { + type _subtuUwE = BaseCollectionEvent + interface RecordRequestPasswordResetEvent extends _subtuUwE { httpContext: echo.Context record?: models.Record } - type _subHzCcV = BaseCollectionEvent - interface RecordConfirmPasswordResetEvent extends _subHzCcV { + type _subZgvGj = BaseCollectionEvent + interface RecordConfirmPasswordResetEvent extends _subZgvGj { httpContext: echo.Context record?: models.Record } - type _subNZaow = BaseCollectionEvent - interface RecordRequestVerificationEvent extends _subNZaow { + type _submufek = BaseCollectionEvent + interface RecordRequestVerificationEvent extends _submufek { httpContext: echo.Context record?: models.Record } - type _subPWmRv = BaseCollectionEvent - interface RecordConfirmVerificationEvent extends _subPWmRv { + type _subDhmvN = BaseCollectionEvent + interface RecordConfirmVerificationEvent extends _subDhmvN { httpContext: echo.Context record?: models.Record } - type _subPmUUB = BaseCollectionEvent - interface RecordRequestEmailChangeEvent extends _subPmUUB { + type _subYwuXQ = BaseCollectionEvent + interface RecordRequestEmailChangeEvent extends _subYwuXQ { httpContext: echo.Context record?: models.Record } - type _subpzRlc = BaseCollectionEvent - interface RecordConfirmEmailChangeEvent extends _subpzRlc { + type _subbSkhX = BaseCollectionEvent + interface RecordConfirmEmailChangeEvent extends _subbSkhX { httpContext: echo.Context record?: models.Record } - type _subKILvu = BaseCollectionEvent - interface RecordListExternalAuthsEvent extends _subKILvu { + type _subwvsSG = BaseCollectionEvent + interface RecordListExternalAuthsEvent extends _subwvsSG { httpContext: echo.Context record?: models.Record externalAuths: Array<(models.ExternalAuth | undefined)> } - type _subTArVP = BaseCollectionEvent - interface RecordUnlinkExternalAuthEvent extends _subTArVP { + type _subnNooz = BaseCollectionEvent + interface RecordUnlinkExternalAuthEvent extends _subnNooz { httpContext: echo.Context record?: models.Record externalAuth?: models.ExternalAuth @@ -16485,33 +16494,33 @@ namespace core { collections: Array<(models.Collection | undefined)> result?: search.Result } - type _subIDkqW = BaseCollectionEvent - interface CollectionViewEvent extends _subIDkqW { + type _subQNldY = BaseCollectionEvent + interface CollectionViewEvent extends _subQNldY { httpContext: echo.Context } - type _subZHPAm = BaseCollectionEvent - interface CollectionCreateEvent extends _subZHPAm { + type _subQWwKv = BaseCollectionEvent + interface CollectionCreateEvent extends _subQWwKv { httpContext: echo.Context } - type _subvYjAK = BaseCollectionEvent - interface CollectionUpdateEvent extends _subvYjAK { + type _subrtgay = BaseCollectionEvent + interface CollectionUpdateEvent extends _subrtgay { httpContext: echo.Context } - type _subsmuBb = BaseCollectionEvent - interface CollectionDeleteEvent extends _subsmuBb { + type _subKEhLa = BaseCollectionEvent + interface CollectionDeleteEvent extends _subKEhLa { httpContext: echo.Context } interface CollectionsImportEvent { httpContext: echo.Context collections: Array<(models.Collection | undefined)> } - type _subdkUZv = BaseModelEvent - interface FileTokenEvent extends _subdkUZv { + type _subUlGze = BaseModelEvent + interface FileTokenEvent extends _subUlGze { httpContext: echo.Context token: string } - type _subYJNoi = BaseCollectionEvent - interface FileDownloadEvent extends _subYJNoi { + type _subKolnx = BaseCollectionEvent + interface FileDownloadEvent extends _subKolnx { httpContext: echo.Context record?: models.Record fileField?: schema.SchemaField @@ -16520,14 +16529,6 @@ namespace core { } } -namespace migrate { - interface Migration { - file: string - up: (db: dbx.Builder) => void - down: (db: dbx.Builder) => void - } -} - /** * Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces. * In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code. @@ -16577,6 +16578,42 @@ namespace cobra { } } +namespace store { +} + +/** + * Package url parses URLs and implements query escaping. + */ +namespace url { + /** + * The Userinfo type is an immutable encapsulation of username and + * password details for a URL. An existing Userinfo value is guaranteed + * to have a username set (potentially empty, as allowed by RFC 2396), + * and optionally a password. + */ + interface Userinfo { + } + interface Userinfo { + /** + * Username returns the username. + */ + username(): string + } + interface Userinfo { + /** + * Password returns the password in case it is set, and whether it is set. + */ + password(): [string, boolean] + } + interface Userinfo { + /** + * String returns the encoded userinfo information in the standard form + * of "username[:password]". + */ + string(): string + } +} + /** * Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer * object, creating another object (Reader or Writer) that also implements @@ -16587,8 +16624,8 @@ namespace bufio { * ReadWriter stores pointers to a Reader and a Writer. * It implements io.ReadWriter. */ - type _subBxpcj = Reader&Writer - interface ReadWriter extends _subBxpcj { + type _subdyrxs = Reader&Writer + interface ReadWriter extends _subdyrxs { } } @@ -16685,36 +16722,16 @@ namespace net { } } -/** - * Package url parses URLs and implements query escaping. - */ -namespace url { +namespace hook { /** - * The Userinfo type is an immutable encapsulation of username and - * password details for a URL. An existing Userinfo value is guaranteed - * to have a username set (potentially empty, as allowed by RFC 2396), - * and optionally a password. + * Handler defines a hook handler function. */ - interface Userinfo { - } - interface Userinfo { - /** - * Username returns the username. - */ - username(): string - } - interface Userinfo { - /** - * Password returns the password in case it is set, and whether it is set. - */ - password(): [string, boolean] - } - interface Userinfo { - /** - * String returns the encoded userinfo information in the standard form - * of "username[:password]". - */ - string(): string + interface Handler {(e: T): void } + /** + * wrapped local Hook embedded struct to limit the public API surface. + */ + type _subuCvHl = Hook + interface mainHook extends _subuCvHl { } } @@ -16895,23 +16912,59 @@ namespace http { import urlpkg = url } -namespace store { +/** + * Package types implements some commonly used db serializable types + * like datetime, json, etc. + */ +namespace types { + /** + * JsonRaw defines a json value type that is safe for db read/write. + */ + interface JsonRaw extends String{} + interface JsonRaw { + /** + * String returns the current JsonRaw instance as a json encoded string. + */ + string(): string + } + interface JsonRaw { + /** + * MarshalJSON implements the [json.Marshaler] interface. + */ + marshalJSON(): string + } + interface JsonRaw { + /** + * UnmarshalJSON implements the [json.Unmarshaler] interface. + */ + unmarshalJSON(b: string): void + } + interface JsonRaw { + /** + * Value implements the [driver.Valuer] interface. + */ + value(): any + } + interface JsonRaw { + /** + * Scan implements [sql.Scanner] interface to scan the provided value + * into the current JsonRaw instance. + */ + scan(value: { + }): void + } } -namespace mailer { +namespace search { /** - * Message defines a generic email message struct. + * Result defines the returned search result structure. */ - interface Message { - from: mail.Address - to: Array - bcc: Array - cc: Array - subject: string - html: string - text: string - headers: _TygojaDict - attachments: _TygojaDict + interface Result { + page: number + perPage: number + totalItems: number + totalPages: number + items: any } } @@ -17029,59 +17082,20 @@ namespace echo { } } -/** - * Package types implements some commonly used db serializable types - * like datetime, json, etc. - */ -namespace types { - /** - * JsonRaw defines a json value type that is safe for db read/write. - */ - interface JsonRaw extends String{} - interface JsonRaw { - /** - * String returns the current JsonRaw instance as a json encoded string. - */ - string(): string - } - interface JsonRaw { - /** - * MarshalJSON implements the [json.Marshaler] interface. - */ - marshalJSON(): string - } - interface JsonRaw { - /** - * UnmarshalJSON implements the [json.Unmarshaler] interface. - */ - unmarshalJSON(b: string): void - } - interface JsonRaw { - /** - * Value implements the [driver.Valuer] interface. - */ - value(): any - } - interface JsonRaw { - /** - * Scan implements [sql.Scanner] interface to scan the provided value - * into the current JsonRaw instance. - */ - scan(value: { - }): void - } -} - -namespace search { +namespace mailer { /** - * Result defines the returned search result structure. + * Message defines a generic email message struct. */ - interface Result { - page: number - perPage: number - totalItems: number - totalPages: number - items: any + interface Message { + from: mail.Address + to: Array + bcc: Array + cc: Array + subject: string + html: string + text: string + headers: _TygojaDict + attachments: _TygojaDict } } @@ -17108,19 +17122,6 @@ namespace settings { } } -namespace hook { - /** - * Handler defines a hook handler function. - */ - interface Handler {(e: T): void } - /** - * wrapped local Hook embedded struct to limit the public API surface. - */ - type _subZwKAy = Hook - interface mainHook extends _subZwKAy { - } -} - namespace subscriptions { /** * Message defines a client's channel data. @@ -17470,6 +17471,9 @@ namespace bufio { } } +namespace search { +} + /** * Package mail implements parsing of mail messages. * @@ -17505,8 +17509,5 @@ namespace mail { } } -namespace search { -} - namespace subscriptions { } diff --git a/plugins/jsvm/jsvm.go b/plugins/jsvm/jsvm.go index 94ab495e3..c869d872c 100644 --- a/plugins/jsvm/jsvm.go +++ b/plugins/jsvm/jsvm.go @@ -423,7 +423,7 @@ func (p *plugin) relativeTypesPath(basepath string) string { return rel } -// saveTypesFile saves the embeded TS declarations as a file on the disk. +// saveTypesFile saves the embedded TS declarations as a file on the disk. func (p *plugin) saveTypesFile() error { fullPath := p.fullTypesPath() diff --git a/plugins/migratecmd/automigrate.go b/plugins/migratecmd/automigrate.go index 6c20eb0a9..b65f67c23 100644 --- a/plugins/migratecmd/automigrate.go +++ b/plugins/migratecmd/automigrate.go @@ -137,19 +137,3 @@ func (p *plugin) getCachedCollections() (map[string]*models.Collection, error) { return result, nil } - -func (p *plugin) hasCustomMigrations() bool { - files, err := os.ReadDir(p.config.Dir) - if err != nil { - return false - } - - for _, f := range files { - if f.IsDir() { - continue - } - return true - } - - return false -} diff --git a/tools/osutils/dir.go b/tools/osutils/dir.go index 500bbc79d..1b4dfc43b 100644 --- a/tools/osutils/dir.go +++ b/tools/osutils/dir.go @@ -34,11 +34,11 @@ func MoveDirContent(src string, dest string, rootExclude ...string) error { moved := map[string]string{} - tryRollback := func() ([]error) { + tryRollback := func() []error { errs := []error{} for old, new := range moved { - if err := os.Rename(new, old); err != nil{ + if err := os.Rename(new, old); err != nil { errs = append(errs, err) } } @@ -64,7 +64,7 @@ func MoveDirContent(src string, dest string, rootExclude ...string) error { new := filepath.Join(dest, basename) if err := os.Rename(old, new); err != nil { - if errs := tryRollback(); len(errs) > 0 { + if errs := tryRollback(); len(errs) > 0 { // currently just log the rollback errors // in the future we may require go 1.20+ to use errors.Join() log.Println(errs) diff --git a/tools/osutils/dir_test.go b/tools/osutils/dir_test.go index a99fa20fb..f690e9994 100644 --- a/tools/osutils/dir_test.go +++ b/tools/osutils/dir_test.go @@ -23,7 +23,7 @@ func TestMoveDirContent(t *testing.T) { // missing dest path // --- - dir1 := filepath.Join(filepath.Dir(testDir), "a", "b", "c", "d", "_pb_move_dir_content_test_" + security.PseudorandomString(4)) + dir1 := filepath.Join(filepath.Dir(testDir), "a", "b", "c", "d", "_pb_move_dir_content_test_"+security.PseudorandomString(4)) defer os.RemoveAll(dir1) if err := osutils.MoveDirContent(testDir, dir1, exclude...); err == nil { @@ -32,14 +32,13 @@ func TestMoveDirContent(t *testing.T) { // existing parent dir // --- - dir2 := filepath.Join(filepath.Dir(testDir), "_pb_move_dir_content_test_" + security.PseudorandomString(4)) + dir2 := filepath.Join(filepath.Dir(testDir), "_pb_move_dir_content_test_"+security.PseudorandomString(4)) defer os.RemoveAll(dir2) if err := osutils.MoveDirContent(testDir, dir2, exclude...); err != nil { t.Fatalf("Expected dir2 to be created, got error: %v", err) } - // find all files files := []string{} filepath.WalkDir(dir2, func(path string, d fs.DirEntry, err error) error { @@ -60,7 +59,7 @@ func TestMoveDirContent(t *testing.T) { filepath.Join(dir2, "test1"), filepath.Join(dir2, "a", "a1"), filepath.Join(dir2, "a", "a2"), - }; + } if len(files) != len(expectedFiles) { t.Fatalf("Expected %d files, got %d: \n%v", len(expectedFiles), len(files), files) @@ -91,7 +90,6 @@ func createTestDir(t *testing.T) string { t.Fatal(err) } - { f, err := os.OpenFile(filepath.Join(dir, "test1"), os.O_WRONLY|os.O_CREATE, 0644) if err != nil { diff --git a/tools/rest/multi_binder_test.go b/tools/rest/multi_binder_test.go index feb45becc..48d635197 100644 --- a/tools/rest/multi_binder_test.go +++ b/tools/rest/multi_binder_test.go @@ -73,7 +73,6 @@ func TestBindBody(t *testing.T) { rawBody, err := json.Marshal(data) if err != nil { t.Errorf("[%d] Failed to marshal binded body: %v", i, err) - } if scenario.expectBody != string(rawBody) { diff --git a/tools/subscriptions/client_test.go b/tools/subscriptions/client_test.go index 58bbd9398..43d075b2a 100644 --- a/tools/subscriptions/client_test.go +++ b/tools/subscriptions/client_test.go @@ -150,14 +150,8 @@ func TestSend(t *testing.T) { received := []string{} go func() { - for { - select { - case m, ok := <-c.Channel(): - if !ok { - return - } - received = append(received, m.Name) - } + for m := range c.Channel() { + received = append(received, m.Name) } }() diff --git a/tools/template/registry.go b/tools/template/registry.go index 0a4c0039e..4cbebe4cb 100644 --- a/tools/template/registry.go +++ b/tools/template/registry.go @@ -1,10 +1,11 @@ -// Package template is a thin wrapper arround the standard html/template +// Package template is a thin wrapper around the standard html/template // and text/template packages that implements a convenient registry to // load and cache templates on the fly concurrently. // // It was created to assist the JSVM plugin HTML rendering, but could be used in other Go code. // // Example: +// // registry := template.NewRegistry() // // html1, err := registry.LoadFiles( diff --git a/ui/dist/assets/AuthMethodsDocs-daff5785.js b/ui/dist/assets/AuthMethodsDocs-b9811beb.js similarity index 97% rename from ui/dist/assets/AuthMethodsDocs-daff5785.js rename to ui/dist/assets/AuthMethodsDocs-b9811beb.js index 31eb503b8..bfeaa663f 100644 --- a/ui/dist/assets/AuthMethodsDocs-daff5785.js +++ b/ui/dist/assets/AuthMethodsDocs-b9811beb.js @@ -1,4 +1,4 @@ -import{S as $e,i as Se,s as ye,e as c,w,b as k,c as oe,f as h,g as d,h as a,m as se,x as G,N as we,P as Te,k as je,Q as Ae,n as Be,t as U,a as W,o as u,d as ae,T as Fe,C as Oe,p as Qe,r as V,u as Ne,M as He}from"./index-c3cca8a1.js";import{S as Ke}from"./SdkTabs-4e51916e.js";import{F as qe}from"./FieldsQueryParam-7f27fd99.js";function ve(n,l,o){const s=n.slice();return s[5]=l[o],s}function Ce(n,l,o){const s=n.slice();return s[5]=l[o],s}function Pe(n,l){let o,s=l[5].code+"",_,p,i,f;function m(){return l[4](l[5])}return{key:n,first:null,c(){o=c("button"),_=w(s),p=k(),h(o,"class","tab-item"),V(o,"active",l[1]===l[5].code),this.first=o},m(v,C){d(v,o,C),a(o,_),a(o,p),i||(f=Ne(o,"click",m),i=!0)},p(v,C){l=v,C&4&&s!==(s=l[5].code+"")&&G(_,s),C&6&&V(o,"active",l[1]===l[5].code)},d(v){v&&u(o),i=!1,f()}}}function Me(n,l){let o,s,_,p;return s=new He({props:{content:l[5].body}}),{key:n,first:null,c(){o=c("div"),oe(s.$$.fragment),_=k(),h(o,"class","tab-item"),V(o,"active",l[1]===l[5].code),this.first=o},m(i,f){d(i,o,f),se(s,o,null),a(o,_),p=!0},p(i,f){l=i;const m={};f&4&&(m.content=l[5].body),s.$set(m),(!p||f&6)&&V(o,"active",l[1]===l[5].code)},i(i){p||(U(s.$$.fragment,i),p=!0)},o(i){W(s.$$.fragment,i),p=!1},d(i){i&&u(o),ae(s)}}}function ze(n){var _e,be;let l,o,s=n[0].name+"",_,p,i,f,m,v,C,H=n[0].name+"",L,ne,E,P,I,j,J,M,K,ie,q,A,ce,Y,z=n[0].name+"",X,re,R,B,Z,$,x,de,ee,T,te,F,le,S,O,g=[],ue=new Map,fe,Q,b=[],me=new Map,y;P=new Ke({props:{js:` +import{S as $e,i as Se,s as ye,e as c,w,b as k,c as oe,f as h,g as d,h as a,m as se,x as G,N as we,P as Te,k as je,Q as Ae,n as Be,t as U,a as W,o as u,d as ae,T as Fe,C as Oe,p as Qe,r as V,u as Ne,M as He}from"./index-058d72e8.js";import{S as Ke}from"./SdkTabs-f9f405f6.js";import{F as qe}from"./FieldsQueryParam-2bcd23bc.js";function ve(n,l,o){const s=n.slice();return s[5]=l[o],s}function Ce(n,l,o){const s=n.slice();return s[5]=l[o],s}function Pe(n,l){let o,s=l[5].code+"",_,p,i,f;function m(){return l[4](l[5])}return{key:n,first:null,c(){o=c("button"),_=w(s),p=k(),h(o,"class","tab-item"),V(o,"active",l[1]===l[5].code),this.first=o},m(v,C){d(v,o,C),a(o,_),a(o,p),i||(f=Ne(o,"click",m),i=!0)},p(v,C){l=v,C&4&&s!==(s=l[5].code+"")&&G(_,s),C&6&&V(o,"active",l[1]===l[5].code)},d(v){v&&u(o),i=!1,f()}}}function Me(n,l){let o,s,_,p;return s=new He({props:{content:l[5].body}}),{key:n,first:null,c(){o=c("div"),oe(s.$$.fragment),_=k(),h(o,"class","tab-item"),V(o,"active",l[1]===l[5].code),this.first=o},m(i,f){d(i,o,f),se(s,o,null),a(o,_),p=!0},p(i,f){l=i;const m={};f&4&&(m.content=l[5].body),s.$set(m),(!p||f&6)&&V(o,"active",l[1]===l[5].code)},i(i){p||(U(s.$$.fragment,i),p=!0)},o(i){W(s.$$.fragment,i),p=!1},d(i){i&&u(o),ae(s)}}}function ze(n){var _e,be;let l,o,s=n[0].name+"",_,p,i,f,m,v,C,H=n[0].name+"",L,ne,E,P,I,j,J,M,K,ie,q,A,ce,Y,z=n[0].name+"",X,re,R,B,Z,$,x,de,ee,T,te,F,le,S,O,g=[],ue=new Map,fe,Q,b=[],me=new Map,y;P=new Ke({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${n[3]}'); diff --git a/ui/dist/assets/AuthRefreshDocs-e9b0480b.js b/ui/dist/assets/AuthRefreshDocs-52bd3b5e.js similarity index 97% rename from ui/dist/assets/AuthRefreshDocs-e9b0480b.js rename to ui/dist/assets/AuthRefreshDocs-52bd3b5e.js index c3856ad37..8e32558e3 100644 --- a/ui/dist/assets/AuthRefreshDocs-e9b0480b.js +++ b/ui/dist/assets/AuthRefreshDocs-52bd3b5e.js @@ -1,4 +1,4 @@ -import{S as Ue,i as je,s as xe,M as Qe,e as s,w as k,b as p,c as J,f as b,g as d,h as o,m as K,x as ce,N as Oe,P as Je,k as Ke,Q as Ie,n as We,t as N,a as V,o as u,d as I,T as Ge,C as Ee,p as Xe,r as W,u as Ye}from"./index-c3cca8a1.js";import{S as Ze}from"./SdkTabs-4e51916e.js";import{F as et}from"./FieldsQueryParam-7f27fd99.js";function Le(r,l,a){const n=r.slice();return n[5]=l[a],n}function Ne(r,l,a){const n=r.slice();return n[5]=l[a],n}function Ve(r,l){let a,n=l[5].code+"",m,_,i,f;function v(){return l[4](l[5])}return{key:r,first:null,c(){a=s("button"),m=k(n),_=p(),b(a,"class","tab-item"),W(a,"active",l[1]===l[5].code),this.first=a},m($,w){d($,a,w),o(a,m),o(a,_),i||(f=Ye(a,"click",v),i=!0)},p($,w){l=$,w&4&&n!==(n=l[5].code+"")&&ce(m,n),w&6&&W(a,"active",l[1]===l[5].code)},d($){$&&u(a),i=!1,f()}}}function ze(r,l){let a,n,m,_;return n=new Qe({props:{content:l[5].body}}),{key:r,first:null,c(){a=s("div"),J(n.$$.fragment),m=p(),b(a,"class","tab-item"),W(a,"active",l[1]===l[5].code),this.first=a},m(i,f){d(i,a,f),K(n,a,null),o(a,m),_=!0},p(i,f){l=i;const v={};f&4&&(v.content=l[5].body),n.$set(v),(!_||f&6)&&W(a,"active",l[1]===l[5].code)},i(i){_||(N(n.$$.fragment,i),_=!0)},o(i){V(n.$$.fragment,i),_=!1},d(i){i&&u(a),I(n)}}}function tt(r){var qe,De;let l,a,n=r[0].name+"",m,_,i,f,v,$,w,B,G,S,z,de,Q,q,ue,X,U=r[0].name+"",Y,pe,fe,j,Z,D,ee,T,te,he,F,C,oe,be,le,me,h,_e,R,ke,ve,$e,ae,ge,se,ye,Se,we,ne,Te,Ce,M,re,H,ie,P,O,y=[],Pe=new Map,Re,E,g=[],Me=new Map,A;$=new Ze({props:{js:` +import{S as Ue,i as je,s as xe,M as Qe,e as s,w as k,b as p,c as J,f as b,g as d,h as o,m as K,x as ce,N as Oe,P as Je,k as Ke,Q as Ie,n as We,t as N,a as V,o as u,d as I,T as Ge,C as Ee,p as Xe,r as W,u as Ye}from"./index-058d72e8.js";import{S as Ze}from"./SdkTabs-f9f405f6.js";import{F as et}from"./FieldsQueryParam-2bcd23bc.js";function Le(r,l,a){const n=r.slice();return n[5]=l[a],n}function Ne(r,l,a){const n=r.slice();return n[5]=l[a],n}function Ve(r,l){let a,n=l[5].code+"",m,_,i,f;function v(){return l[4](l[5])}return{key:r,first:null,c(){a=s("button"),m=k(n),_=p(),b(a,"class","tab-item"),W(a,"active",l[1]===l[5].code),this.first=a},m($,w){d($,a,w),o(a,m),o(a,_),i||(f=Ye(a,"click",v),i=!0)},p($,w){l=$,w&4&&n!==(n=l[5].code+"")&&ce(m,n),w&6&&W(a,"active",l[1]===l[5].code)},d($){$&&u(a),i=!1,f()}}}function ze(r,l){let a,n,m,_;return n=new Qe({props:{content:l[5].body}}),{key:r,first:null,c(){a=s("div"),J(n.$$.fragment),m=p(),b(a,"class","tab-item"),W(a,"active",l[1]===l[5].code),this.first=a},m(i,f){d(i,a,f),K(n,a,null),o(a,m),_=!0},p(i,f){l=i;const v={};f&4&&(v.content=l[5].body),n.$set(v),(!_||f&6)&&W(a,"active",l[1]===l[5].code)},i(i){_||(N(n.$$.fragment,i),_=!0)},o(i){V(n.$$.fragment,i),_=!1},d(i){i&&u(a),I(n)}}}function tt(r){var qe,De;let l,a,n=r[0].name+"",m,_,i,f,v,$,w,B,G,S,z,de,Q,q,ue,X,U=r[0].name+"",Y,pe,fe,j,Z,D,ee,T,te,he,F,C,oe,be,le,me,h,_e,R,ke,ve,$e,ae,ge,se,ye,Se,we,ne,Te,Ce,M,re,H,ie,P,O,y=[],Pe=new Map,Re,E,g=[],Me=new Map,A;$=new Ze({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${r[3]}'); diff --git a/ui/dist/assets/AuthWithOAuth2Docs-bac5fefd.js b/ui/dist/assets/AuthWithOAuth2Docs-67e6c0b5.js similarity index 98% rename from ui/dist/assets/AuthWithOAuth2Docs-bac5fefd.js rename to ui/dist/assets/AuthWithOAuth2Docs-67e6c0b5.js index 31bb80928..138a28c0e 100644 --- a/ui/dist/assets/AuthWithOAuth2Docs-bac5fefd.js +++ b/ui/dist/assets/AuthWithOAuth2Docs-67e6c0b5.js @@ -1,4 +1,4 @@ -import{S as Ve,i as Le,s as Ee,M as je,e as s,w as k,b as h,c as z,f as p,g as r,h as a,m as I,x as he,N as xe,P as Je,k as Ne,Q as Qe,n as ze,t as V,a as L,o as c,d as K,T as Ie,C as We,p as Ke,r as G,u as Ge}from"./index-c3cca8a1.js";import{S as Xe}from"./SdkTabs-4e51916e.js";import{F as Ye}from"./FieldsQueryParam-7f27fd99.js";function Ue(i,l,o){const n=i.slice();return n[5]=l[o],n}function Be(i,l,o){const n=i.slice();return n[5]=l[o],n}function Fe(i,l){let o,n=l[5].code+"",m,g,u,b;function _(){return l[4](l[5])}return{key:i,first:null,c(){o=s("button"),m=k(n),g=h(),p(o,"class","tab-item"),G(o,"active",l[1]===l[5].code),this.first=o},m(v,A){r(v,o,A),a(o,m),a(o,g),u||(b=Ge(o,"click",_),u=!0)},p(v,A){l=v,A&4&&n!==(n=l[5].code+"")&&he(m,n),A&6&&G(o,"active",l[1]===l[5].code)},d(v){v&&c(o),u=!1,b()}}}function He(i,l){let o,n,m,g;return n=new je({props:{content:l[5].body}}),{key:i,first:null,c(){o=s("div"),z(n.$$.fragment),m=h(),p(o,"class","tab-item"),G(o,"active",l[1]===l[5].code),this.first=o},m(u,b){r(u,o,b),I(n,o,null),a(o,m),g=!0},p(u,b){l=u;const _={};b&4&&(_.content=l[5].body),n.$set(_),(!g||b&6)&&G(o,"active",l[1]===l[5].code)},i(u){g||(V(n.$$.fragment,u),g=!0)},o(u){L(n.$$.fragment,u),g=!1},d(u){u&&c(o),K(n)}}}function Ze(i){let l,o,n=i[0].name+"",m,g,u,b,_,v,A,P,X,S,E,pe,J,M,be,Y,N=i[0].name+"",Z,fe,ee,R,te,x,ae,W,le,y,oe,me,U,$,se,ge,ne,ke,f,_e,C,ve,we,Oe,ie,Ae,re,Se,ye,$e,ce,Te,Ce,q,ue,B,de,T,F,O=[],qe=new Map,De,H,w=[],Pe=new Map,D;v=new Xe({props:{js:` +import{S as Ve,i as Le,s as Ee,M as je,e as s,w as k,b as h,c as z,f as p,g as r,h as a,m as I,x as he,N as xe,P as Je,k as Ne,Q as Qe,n as ze,t as V,a as L,o as c,d as K,T as Ie,C as We,p as Ke,r as G,u as Ge}from"./index-058d72e8.js";import{S as Xe}from"./SdkTabs-f9f405f6.js";import{F as Ye}from"./FieldsQueryParam-2bcd23bc.js";function Ue(i,l,o){const n=i.slice();return n[5]=l[o],n}function Be(i,l,o){const n=i.slice();return n[5]=l[o],n}function Fe(i,l){let o,n=l[5].code+"",m,g,u,b;function _(){return l[4](l[5])}return{key:i,first:null,c(){o=s("button"),m=k(n),g=h(),p(o,"class","tab-item"),G(o,"active",l[1]===l[5].code),this.first=o},m(v,A){r(v,o,A),a(o,m),a(o,g),u||(b=Ge(o,"click",_),u=!0)},p(v,A){l=v,A&4&&n!==(n=l[5].code+"")&&he(m,n),A&6&&G(o,"active",l[1]===l[5].code)},d(v){v&&c(o),u=!1,b()}}}function He(i,l){let o,n,m,g;return n=new je({props:{content:l[5].body}}),{key:i,first:null,c(){o=s("div"),z(n.$$.fragment),m=h(),p(o,"class","tab-item"),G(o,"active",l[1]===l[5].code),this.first=o},m(u,b){r(u,o,b),I(n,o,null),a(o,m),g=!0},p(u,b){l=u;const _={};b&4&&(_.content=l[5].body),n.$set(_),(!g||b&6)&&G(o,"active",l[1]===l[5].code)},i(u){g||(V(n.$$.fragment,u),g=!0)},o(u){L(n.$$.fragment,u),g=!1},d(u){u&&c(o),K(n)}}}function Ze(i){let l,o,n=i[0].name+"",m,g,u,b,_,v,A,P,X,S,E,pe,J,M,be,Y,N=i[0].name+"",Z,fe,ee,R,te,x,ae,W,le,y,oe,me,U,$,se,ge,ne,ke,f,_e,C,ve,we,Oe,ie,Ae,re,Se,ye,$e,ce,Te,Ce,q,ue,B,de,T,F,O=[],qe=new Map,De,H,w=[],Pe=new Map,D;v=new Xe({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${i[3]}'); diff --git a/ui/dist/assets/AuthWithPasswordDocs-b2cad1c0.js b/ui/dist/assets/AuthWithPasswordDocs-a8faaef0.js similarity index 98% rename from ui/dist/assets/AuthWithPasswordDocs-b2cad1c0.js rename to ui/dist/assets/AuthWithPasswordDocs-a8faaef0.js index cfadfe8f5..4fe2cb71a 100644 --- a/ui/dist/assets/AuthWithPasswordDocs-b2cad1c0.js +++ b/ui/dist/assets/AuthWithPasswordDocs-a8faaef0.js @@ -1,4 +1,4 @@ -import{S as ve,i as ye,s as ge,M as we,e as s,w as f,b as d,c as ot,f as h,g as r,h as e,m as st,x as Ut,N as ue,P as $e,k as Pe,Q as Re,n as Ce,t as Z,a as x,o as c,d as nt,T as Te,C as fe,p as Ae,r as it,u as Oe}from"./index-c3cca8a1.js";import{S as Me}from"./SdkTabs-4e51916e.js";import{F as Ue}from"./FieldsQueryParam-7f27fd99.js";function pe(n,l,a){const i=n.slice();return i[8]=l[a],i}function be(n,l,a){const i=n.slice();return i[8]=l[a],i}function De(n){let l;return{c(){l=f("email")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function Ee(n){let l;return{c(){l=f("username")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function We(n){let l;return{c(){l=f("username/email")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function me(n){let l;return{c(){l=s("strong"),l.textContent="username"},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function he(n){let l;return{c(){l=f("or")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function _e(n){let l;return{c(){l=s("strong"),l.textContent="email"},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function ke(n,l){let a,i=l[8].code+"",S,m,p,u;function _(){return l[7](l[8])}return{key:n,first:null,c(){a=s("button"),S=f(i),m=d(),h(a,"class","tab-item"),it(a,"active",l[3]===l[8].code),this.first=a},m(R,C){r(R,a,C),e(a,S),e(a,m),p||(u=Oe(a,"click",_),p=!0)},p(R,C){l=R,C&16&&i!==(i=l[8].code+"")&&Ut(S,i),C&24&&it(a,"active",l[3]===l[8].code)},d(R){R&&c(a),p=!1,u()}}}function Se(n,l){let a,i,S,m;return i=new we({props:{content:l[8].body}}),{key:n,first:null,c(){a=s("div"),ot(i.$$.fragment),S=d(),h(a,"class","tab-item"),it(a,"active",l[3]===l[8].code),this.first=a},m(p,u){r(p,a,u),st(i,a,null),e(a,S),m=!0},p(p,u){l=p;const _={};u&16&&(_.content=l[8].body),i.$set(_),(!m||u&24)&&it(a,"active",l[3]===l[8].code)},i(p){m||(Z(i.$$.fragment,p),m=!0)},o(p){x(i.$$.fragment,p),m=!1},d(p){p&&c(a),nt(i)}}}function Le(n){var ie,re;let l,a,i=n[0].name+"",S,m,p,u,_,R,C,T,B,Dt,rt,O,ct,N,dt,M,tt,Et,et,I,Wt,ut,lt=n[0].name+"",ft,Lt,pt,V,bt,U,mt,Bt,Q,D,ht,qt,_t,Ft,$,Ht,kt,St,wt,Yt,vt,yt,j,gt,E,$t,Nt,J,W,Pt,It,Rt,Vt,k,Qt,q,jt,Jt,Kt,Ct,zt,Tt,Gt,Xt,Zt,At,xt,te,F,Ot,K,Mt,L,z,A=[],ee=new Map,le,G,w=[],ae=new Map,H;function oe(t,o){if(t[1]&&t[2])return We;if(t[1])return Ee;if(t[2])return De}let Y=oe(n),P=Y&&Y(n);O=new Me({props:{js:` +import{S as ve,i as ye,s as ge,M as we,e as s,w as f,b as d,c as ot,f as h,g as r,h as e,m as st,x as Ut,N as ue,P as $e,k as Pe,Q as Re,n as Ce,t as Z,a as x,o as c,d as nt,T as Te,C as fe,p as Ae,r as it,u as Oe}from"./index-058d72e8.js";import{S as Me}from"./SdkTabs-f9f405f6.js";import{F as Ue}from"./FieldsQueryParam-2bcd23bc.js";function pe(n,l,a){const i=n.slice();return i[8]=l[a],i}function be(n,l,a){const i=n.slice();return i[8]=l[a],i}function De(n){let l;return{c(){l=f("email")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function Ee(n){let l;return{c(){l=f("username")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function We(n){let l;return{c(){l=f("username/email")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function me(n){let l;return{c(){l=s("strong"),l.textContent="username"},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function he(n){let l;return{c(){l=f("or")},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function _e(n){let l;return{c(){l=s("strong"),l.textContent="email"},m(a,i){r(a,l,i)},d(a){a&&c(l)}}}function ke(n,l){let a,i=l[8].code+"",S,m,p,u;function _(){return l[7](l[8])}return{key:n,first:null,c(){a=s("button"),S=f(i),m=d(),h(a,"class","tab-item"),it(a,"active",l[3]===l[8].code),this.first=a},m(R,C){r(R,a,C),e(a,S),e(a,m),p||(u=Oe(a,"click",_),p=!0)},p(R,C){l=R,C&16&&i!==(i=l[8].code+"")&&Ut(S,i),C&24&&it(a,"active",l[3]===l[8].code)},d(R){R&&c(a),p=!1,u()}}}function Se(n,l){let a,i,S,m;return i=new we({props:{content:l[8].body}}),{key:n,first:null,c(){a=s("div"),ot(i.$$.fragment),S=d(),h(a,"class","tab-item"),it(a,"active",l[3]===l[8].code),this.first=a},m(p,u){r(p,a,u),st(i,a,null),e(a,S),m=!0},p(p,u){l=p;const _={};u&16&&(_.content=l[8].body),i.$set(_),(!m||u&24)&&it(a,"active",l[3]===l[8].code)},i(p){m||(Z(i.$$.fragment,p),m=!0)},o(p){x(i.$$.fragment,p),m=!1},d(p){p&&c(a),nt(i)}}}function Le(n){var ie,re;let l,a,i=n[0].name+"",S,m,p,u,_,R,C,T,B,Dt,rt,O,ct,N,dt,M,tt,Et,et,I,Wt,ut,lt=n[0].name+"",ft,Lt,pt,V,bt,U,mt,Bt,Q,D,ht,qt,_t,Ft,$,Ht,kt,St,wt,Yt,vt,yt,j,gt,E,$t,Nt,J,W,Pt,It,Rt,Vt,k,Qt,q,jt,Jt,Kt,Ct,zt,Tt,Gt,Xt,Zt,At,xt,te,F,Ot,K,Mt,L,z,A=[],ee=new Map,le,G,w=[],ae=new Map,H;function oe(t,o){if(t[1]&&t[2])return We;if(t[1])return Ee;if(t[2])return De}let Y=oe(n),P=Y&&Y(n);O=new Me({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${n[6]}'); diff --git a/ui/dist/assets/CodeEditor-95986a37.js b/ui/dist/assets/CodeEditor-ea0b96ae.js similarity index 99% rename from ui/dist/assets/CodeEditor-95986a37.js rename to ui/dist/assets/CodeEditor-ea0b96ae.js index 74d3006f8..b8d074334 100644 --- a/ui/dist/assets/CodeEditor-95986a37.js +++ b/ui/dist/assets/CodeEditor-ea0b96ae.js @@ -1,4 +1,4 @@ -import{S as $t,i as gt,s as mt,e as Xt,f as Pt,U as D,g as Zt,y as je,o as bt,I as xt,J as kt,K as wt,H as yt,C as Yt,L as Tt}from"./index-c3cca8a1.js";import{P as Ut,N as vt,u as Vt,D as Rt,v as Ye,T as M,I as Te,w as oe,x as n,y as _t,L as ce,z as Qe,A,B as ue,F as kO,G as fe,H as q,J as wO,K as yO,M as YO,E as U,O as E,Q as Ct,R as Wt,U as TO,V as P,W as qt,X as jt,a as j,h as zt,b as Gt,c as It,d as At,e as Et,s as Nt,t as Bt,f as Dt,g as Jt,r as Lt,i as Mt,k as Ft,j as Kt,l as Ht,m as ea,n as Oa,o as ta,p as aa,q as ze,C as J}from"./index-fd4289fb.js";class ee{constructor(e,a,t,i,s,r,l,o,Q,u=0,c){this.p=e,this.stack=a,this.state=t,this.reducePos=i,this.pos=s,this.score=r,this.buffer=l,this.bufferBase=o,this.curContext=Q,this.lookAhead=u,this.parent=c}toString(){return`[${this.stack.filter((e,a)=>a%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,a,t=0){let i=e.parser.context;return new ee(e,[],a,t,t,0,[],0,i?new Ge(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,a){this.stack.push(this.state,a,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var a;let t=e>>19,i=e&65535,{parser:s}=this.p,r=s.dynamicPrecedence(i);if(r&&(this.score+=r),t==0){this.pushState(s.getGoto(this.state,i,!0),this.reducePos),i=2e3&&!(!((a=this.p.parser.nodeSet.types[i])===null||a===void 0)&&a.isAnonymous)&&(o==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=Q):this.p.lastBigReductionSizel;)this.stack.pop();this.reduceContext(i,o)}storeNode(e,a,t,i=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&r.buffer[l-4]==0&&r.buffer[l-1]>-1){if(a==t)return;if(r.buffer[l-2]>=a){r.buffer[l-2]=t;return}}}if(!s||this.pos==t)this.buffer.push(e,a,t,i);else{let r=this.buffer.length;if(r>0&&this.buffer[r-4]!=0)for(;r>0&&this.buffer[r-2]>t;)this.buffer[r]=this.buffer[r-4],this.buffer[r+1]=this.buffer[r-3],this.buffer[r+2]=this.buffer[r-2],this.buffer[r+3]=this.buffer[r-1],r-=4,i>4&&(i-=4);this.buffer[r]=e,this.buffer[r+1]=a,this.buffer[r+2]=t,this.buffer[r+3]=i}}shift(e,a,t){let i=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=t,this.shiftContext(a,i),a<=this.p.parser.maxNode&&this.buffer.push(a,i,t,4);else{let s=e,{parser:r}=this.p;(t>this.pos||a<=r.maxNode)&&(this.pos=t,r.stateFlag(s,1)||(this.reducePos=t)),this.pushState(s,i),this.shiftContext(a,i),a<=r.maxNode&&this.buffer.push(a,i,t,4)}}apply(e,a,t){e&65536?this.reduce(e):this.shift(e,a,t)}useNode(e,a){let t=this.p.reused.length-1;(t<0||this.p.reused[t]!=e)&&(this.p.reused.push(e),t++);let i=this.pos;this.reducePos=this.pos=i+e.length,this.pushState(a,i),this.buffer.push(t,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,a=e.buffer.length;for(;a>0&&e.buffer[a-2]>e.reducePos;)a-=4;let t=e.buffer.slice(a),i=e.bufferBase+a;for(;e&&i==e.bufferBase;)e=e.parent;return new ee(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,t,i,this.curContext,this.lookAhead,e)}recoverByDelete(e,a){let t=e<=this.p.parser.maxNode;t&&this.storeNode(e,this.pos,a,4),this.storeNode(0,this.pos,a,t?8:4),this.pos=this.reducePos=a,this.score-=190}canShift(e){for(let a=new ia(this);;){let t=this.p.parser.stateSlot(a.state,4)||this.p.parser.hasAction(a.state,e);if(t==0)return!1;if(!(t&65536))return!0;a.reduce(t)}}recoverByInsert(e){if(this.stack.length>=300)return[];let a=this.p.parser.nextStates(this.state);if(a.length>8||this.stack.length>=120){let i=[];for(let s=0,r;so&1&&l==r)||i.push(a[s],r)}a=i}let t=[];for(let i=0;i>19,i=a&65535,s=this.stack.length-t*3;if(s<0||e.getGoto(this.stack[s],i,!1)<0){let r=this.findForcedReduction();if(r==null)return!1;a=r}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(a),!0}findForcedReduction(){let{parser:e}=this.p,a=[],t=(i,s)=>{if(!a.includes(i))return a.push(i),e.allActions(i,r=>{if(!(r&393216))if(r&65536){let l=(r>>19)-s;if(l>1){let o=r&65535,Q=this.stack.length-l*3;if(Q>=0&&e.getGoto(this.stack[Q],o,!1)>=0)return l<<19|65536|o}}else{let l=t(r,s+1);if(l!=null)return l}})};return t(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let a=0;athis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Ge{constructor(e,a){this.tracker=e,this.context=a,this.hash=e.strict?e.hash(a):0}}var Ie;(function(O){O[O.Insert=200]="Insert",O[O.Delete=190]="Delete",O[O.Reduce=100]="Reduce",O[O.MaxNext=4]="MaxNext",O[O.MaxInsertStackDepth=300]="MaxInsertStackDepth",O[O.DampenInsertStackDepth=120]="DampenInsertStackDepth",O[O.MinBigReduction=2e3]="MinBigReduction"})(Ie||(Ie={}));class ia{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let a=e&65535,t=e>>19;t==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(t-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],a,!0);this.state=i}}class Oe{constructor(e,a,t){this.stack=e,this.pos=a,this.index=t,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,a=e.bufferBase+e.buffer.length){return new Oe(e,a,a-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Oe(this.stack,this.pos,this.index)}}function I(O,e=Uint16Array){if(typeof O!="string")return O;let a=null;for(let t=0,i=0;t=92&&r--,r>=34&&r--;let o=r-32;if(o>=46&&(o-=46,l=!0),s+=o,l)break;s*=46}a?a[i++]=s:a=new e(s)}return a}class F{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const Ae=new F;class ra{constructor(e,a){this.input=e,this.ranges=a,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=Ae,this.rangeIndex=0,this.pos=this.chunkPos=a[0].from,this.range=a[0],this.end=a[a.length-1].to,this.readNext()}resolveOffset(e,a){let t=this.range,i=this.rangeIndex,s=this.pos+e;for(;st.to:s>=t.to;){if(i==this.ranges.length-1)return null;let r=this.ranges[++i];s+=r.from-t.to,t=r}return s}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,a.from);return this.end}peek(e){let a=this.chunkOff+e,t,i;if(a>=0&&a=this.chunk2Pos&&tl.to&&(this.chunk2=this.chunk2.slice(0,l.to-t)),i=this.chunk2.charCodeAt(0)}}return t>=this.token.lookAhead&&(this.token.lookAhead=t+1),i}acceptToken(e,a=0){let t=a?this.resolveOffset(a,-1):this.pos;if(t==null||t=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,a){if(a?(this.token=a,a.start=e,a.lookAhead=e+1,a.value=a.extended=-1):this.token=Ae,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&a<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,a-this.chunkPos);if(e>=this.chunk2Pos&&a<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,a-this.chunk2Pos);if(e>=this.range.from&&a<=this.range.to)return this.input.read(e,a);let t="";for(let i of this.ranges){if(i.from>=a)break;i.to>e&&(t+=this.input.read(Math.max(i.from,e),Math.min(i.to,a)))}return t}}class _{constructor(e,a){this.data=e,this.id=a}token(e,a){let{parser:t}=a.p;UO(this.data,e,a,this.id,t.data,t.tokenPrecTable)}}_.prototype.contextual=_.prototype.fallback=_.prototype.extend=!1;class te{constructor(e,a,t){this.precTable=a,this.elseToken=t,this.data=typeof e=="string"?I(e):e}token(e,a){let t=e.pos,i=0;for(;;){let s=e.next<0,r=e.resolveOffset(1,1);if(UO(this.data,e,a,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||i++,r==null)break;e.reset(r,e.token)}i&&(e.reset(t,e.token),e.acceptToken(this.elseToken,i))}}te.prototype.contextual=_.prototype.fallback=_.prototype.extend=!1;class b{constructor(e,a={}){this.token=e,this.contextual=!!a.contextual,this.fallback=!!a.fallback,this.extend=!!a.extend}}function UO(O,e,a,t,i,s){let r=0,l=1<0){let p=O[f];if(o.allows(p)&&(e.token.value==-1||e.token.value==p||sa(p,e.token.value,i,s))){e.acceptToken(p);break}}let u=e.next,c=0,h=O[r+2];if(e.next<0&&h>c&&O[Q+h*3-3]==65535&&O[Q+h*3-3]==65535){r=O[Q+h*3-1];continue e}for(;c>1,p=Q+f+(f<<1),g=O[p],$=O[p+1]||65536;if(u=$)c=f+1;else{r=O[p+2],e.advance();continue e}}break}}function Ee(O,e,a){for(let t=e,i;(i=O[t])!=65535;t++)if(i==a)return t-e;return-1}function sa(O,e,a,t){let i=Ee(a,t,e);return i<0||Ee(a,t,O)e)&&!t.type.isError)return a<0?Math.max(0,Math.min(t.to-1,e-25)):Math.min(O.length,Math.max(t.from+1,e+25));if(a<0?t.prevSibling():t.nextSibling())break;if(!t.parent())return a<0?0:O.length}}class la{constructor(e,a){this.fragments=e,this.nodeSet=a,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Be(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Be(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=r,null;if(s instanceof M){if(r==e){if(r=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(r),this.index.push(0))}else this.index[a]++,this.nextStart=r+s.length}}}class na{constructor(e,a){this.stream=a,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(t=>new F)}getActions(e){let a=0,t=null,{parser:i}=e.p,{tokenizers:s}=i,r=i.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,o=0;for(let Q=0;Qc.end+25&&(o=Math.max(c.lookAhead,o)),c.value!=0)){let h=a;if(c.extended>-1&&(a=this.addActions(e,c.extended,c.end,a)),a=this.addActions(e,c.value,c.end,a),!u.extend&&(t=c,a>h))break}}for(;this.actions.length>a;)this.actions.pop();return o&&e.setLookAhead(o),!t&&e.pos==this.stream.end&&(t=new F,t.value=e.p.parser.eofTerm,t.start=t.end=e.pos,a=this.addActions(e,t.value,t.end,a)),this.mainToken=t,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let a=new F,{pos:t,p:i}=e;return a.start=t,a.end=Math.min(t+1,i.stream.end),a.value=t==i.stream.end?i.parser.eofTerm:0,a}updateCachedToken(e,a,t){let i=this.stream.clipPos(t.pos);if(a.token(this.stream.reset(i,e),t),e.value>-1){let{parser:s}=t.p;for(let r=0;r=0&&t.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(i+1)}putAction(e,a,t,i){for(let s=0;se.bufferLength*4?new la(t,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,a=this.minStackPos,t=this.stacks=[],i,s;if(this.bigReductionCount>300&&e.length==1){let[r]=e;for(;r.forceReduce()&&r.stack.length&&r.stack[r.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let r=0;ra)t.push(l);else{if(this.advanceStack(l,t,e))continue;{i||(i=[],s=[]),i.push(l);let o=this.tokens.getMainToken(l);s.push(o.value,o.end)}}break}}if(!t.length){let r=i&&Qa(i);if(r)return this.stackToTree(r);if(this.parser.strict)throw Z&&i&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+a);this.recovering||(this.recovering=5)}if(this.recovering&&i){let r=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,s,t);if(r)return this.stackToTree(r.forceAll())}if(this.recovering){let r=this.recovering==1?1:this.recovering*3;if(t.length>r)for(t.sort((l,o)=>o.score-l.score);t.length>r;)t.pop();t.some(l=>l.reducePos>a)&&this.recovering--}else if(t.length>1){e:for(let r=0;r500&&Q.buffer.length>500)if((l.score-Q.score||l.buffer.length-Q.buffer.length)>0)t.splice(o--,1);else{t.splice(r--,1);continue e}}}t.length>12&&t.splice(12,t.length-12)}this.minStackPos=t[0].pos;for(let r=1;r ":"";if(this.stoppedAt!=null&&i>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let Q=e.curContext&&e.curContext.tracker.strict,u=Q?e.curContext.hash:0;for(let c=this.fragments.nodeAt(i);c;){let h=this.parser.nodeSet.types[c.type.id]==c.type?s.getGoto(e.state,c.type.id):-1;if(h>-1&&c.length&&(!Q||(c.prop(Ye.contextHash)||0)==u))return e.useNode(c,h),Z&&console.log(r+this.stackID(e)+` (via reuse of ${s.getName(c.type.id)})`),!0;if(!(c instanceof M)||c.children.length==0||c.positions[0]>0)break;let f=c.children[0];if(f instanceof M&&c.positions[0]==0)c=f;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),Z&&console.log(r+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let o=this.tokens.getActions(e);for(let Q=0;Qi?a.push(p):t.push(p)}return!1}advanceFully(e,a){let t=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>t)return Je(e,a),!0}}runRecovery(e,a,t){let i=null,s=!1;for(let r=0;r ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),Z&&console.log(u+this.stackID(l)+" (restarted)"),this.advanceFully(l,t))))continue;let c=l.split(),h=u;for(let f=0;c.forceReduce()&&f<10&&(Z&&console.log(h+this.stackID(c)+" (via force-reduce)"),!this.advanceFully(c,t));f++)Z&&(h=this.stackID(c)+" -> ");for(let f of l.recoverByInsert(o))Z&&console.log(u+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,t);this.stream.end>l.pos?(Q==l.pos&&(Q++,o=0),l.recoverByDelete(o,Q),Z&&console.log(u+this.stackID(l)+` (via recover-delete ${this.parser.getName(o)})`),Je(l,t)):(!i||i.scoreO;class vO{constructor(e){this.start=e.start,this.shift=e.shift||de,this.reduce=e.reduce||de,this.reuse=e.reuse||de,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class v extends Ut{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let a=e.nodeNames.split(" ");this.minRepeatTerm=a.length;for(let l=0;le.topRules[l][1]),i=[];for(let l=0;l=0)s(u,o,l[Q++]);else{let c=l[Q+-u];for(let h=-u;h>0;h--)s(l[Q++],o,c);Q++}}}this.nodeSet=new vt(a.map((l,o)=>Vt.define({name:o>=this.minRepeatTerm?void 0:l,id:o,props:i[o],top:t.indexOf(o)>-1,error:o==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(o)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Rt;let r=I(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new _(r,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,a,t){let i=new oa(this,e,a,t);for(let s of this.wrappers)i=s(i,e,a,t);return i}getGoto(e,a,t=!1){let i=this.goto;if(a>=i[0])return-1;for(let s=i[a+1];;){let r=i[s++],l=r&1,o=i[s++];if(l&&t)return o;for(let Q=s+(r>>1);s0}validAction(e,a){return!!this.allActions(e,t=>t==a?!0:null)}allActions(e,a){let t=this.stateSlot(e,4),i=t?a(t):void 0;for(let s=this.stateSlot(e,1);i==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=k(this.data,s+2);else break;i=a(k(this.data,s+1))}return i}nextStates(e){let a=[];for(let t=this.stateSlot(e,1);;t+=3){if(this.data[t]==65535)if(this.data[t+1]==1)t=k(this.data,t+2);else break;if(!(this.data[t+2]&1)){let i=this.data[t+1];a.some((s,r)=>r&1&&s==i)||a.push(this.data[t],i)}}return a}configure(e){let a=Object.assign(Object.create(v.prototype),this);if(e.props&&(a.nodeSet=this.nodeSet.extend(...e.props)),e.top){let t=this.topRules[e.top];if(!t)throw new RangeError(`Invalid top rule name ${e.top}`);a.top=t}return e.tokenizers&&(a.tokenizers=this.tokenizers.map(t=>{let i=e.tokenizers.find(s=>s.from==t);return i?i.to:t})),e.specializers&&(a.specializers=this.specializers.slice(),a.specializerSpecs=this.specializerSpecs.map((t,i)=>{let s=e.specializers.find(l=>l.from==t.external);if(!s)return t;let r=Object.assign(Object.assign({},t),{external:s.to});return a.specializers[i]=Le(r),r})),e.contextTracker&&(a.context=e.contextTracker),e.dialect&&(a.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(a.strict=e.strict),e.wrap&&(a.wrappers=a.wrappers.concat(e.wrap)),e.bufferLength!=null&&(a.bufferLength=e.bufferLength),a}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let a=this.dynamicPrecedences;return a==null?0:a[e]||0}parseDialect(e){let a=Object.keys(this.dialects),t=a.map(()=>!1);if(e)for(let s of e.split(" ")){let r=a.indexOf(s);r>=0&&(t[r]=!0)}let i=null;for(let s=0;st)&&a.p.parser.stateFlag(a.state,2)&&(!e||e.scoreO.external(a,t)<<1|e}return O.get}const ua=54,fa=1,ha=55,da=2,pa=56,Sa=3,Me=4,$a=5,ae=6,VO=7,RO=8,_O=9,CO=10,ga=11,ma=12,Xa=13,pe=57,Pa=14,Fe=58,WO=20,Za=22,qO=23,ba=24,be=26,jO=27,xa=28,ka=31,wa=34,ya=36,Ya=37,Ta=0,Ua=1,va={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},Va={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},Ke={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function Ra(O){return O==45||O==46||O==58||O>=65&&O<=90||O==95||O>=97&&O<=122||O>=161}function zO(O){return O==9||O==10||O==13||O==32}let He=null,eO=null,OO=0;function xe(O,e){let a=O.pos+e;if(OO==a&&eO==O)return He;let t=O.peek(e);for(;zO(t);)t=O.peek(++e);let i="";for(;Ra(t);)i+=String.fromCharCode(t),t=O.peek(++e);return eO=O,OO=a,He=i?i.toLowerCase():t==_a||t==Ca?void 0:null}const GO=60,ie=62,Ue=47,_a=63,Ca=33,Wa=45;function tO(O,e){this.name=O,this.parent=e,this.hash=e?e.hash:0;for(let a=0;a-1?new tO(xe(t,1)||"",O):O},reduce(O,e){return e==WO&&O?O.parent:O},reuse(O,e,a,t){let i=e.type.id;return i==ae||i==ya?new tO(xe(t,1)||"",O):O},hash(O){return O?O.hash:0},strict:!1}),za=new b((O,e)=>{if(O.next!=GO){O.next<0&&e.context&&O.acceptToken(pe);return}O.advance();let a=O.next==Ue;a&&O.advance();let t=xe(O,0);if(t===void 0)return;if(!t)return O.acceptToken(a?Pa:ae);let i=e.context?e.context.name:null;if(a){if(t==i)return O.acceptToken(ga);if(i&&Va[i])return O.acceptToken(pe,-2);if(e.dialectEnabled(Ta))return O.acceptToken(ma);for(let s=e.context;s;s=s.parent)if(s.name==t)return;O.acceptToken(Xa)}else{if(t=="script")return O.acceptToken(VO);if(t=="style")return O.acceptToken(RO);if(t=="textarea")return O.acceptToken(_O);if(va.hasOwnProperty(t))return O.acceptToken(CO);i&&Ke[i]&&Ke[i][t]?O.acceptToken(pe,-1):O.acceptToken(ae)}},{contextual:!0}),Ga=new b(O=>{for(let e=0,a=0;;a++){if(O.next<0){a&&O.acceptToken(Fe);break}if(O.next==Wa)e++;else if(O.next==ie&&e>=2){a>3&&O.acceptToken(Fe,-2);break}else e=0;O.advance()}});function Ia(O){for(;O;O=O.parent)if(O.name=="svg"||O.name=="math")return!0;return!1}const Aa=new b((O,e)=>{if(O.next==Ue&&O.peek(1)==ie){let a=e.dialectEnabled(Ua)||Ia(e.context);O.acceptToken(a?$a:Me,2)}else O.next==ie&&O.acceptToken(Me,1)});function ve(O,e,a){let t=2+O.length;return new b(i=>{for(let s=0,r=0,l=0;;l++){if(i.next<0){l&&i.acceptToken(e);break}if(s==0&&i.next==GO||s==1&&i.next==Ue||s>=2&&sr?i.acceptToken(e,-r):i.acceptToken(a,-(r-2));break}else if((i.next==10||i.next==13)&&l){i.acceptToken(e,1);break}else s=r=0;i.advance()}})}const Ea=ve("script",ua,fa),Na=ve("style",ha,da),Ba=ve("textarea",pa,Sa),Da=oe({"Text RawText":n.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":n.angleBracket,TagName:n.tagName,"MismatchedCloseTag/TagName":[n.tagName,n.invalid],AttributeName:n.attributeName,"AttributeValue UnquotedAttributeValue":n.attributeValue,Is:n.definitionOperator,"EntityReference CharacterReference":n.character,Comment:n.blockComment,ProcessingInst:n.processingInstruction,DoctypeDecl:n.documentMeta}),Ja=v.deserialize({version:14,states:",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z",stateData:"+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~",goto:"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:67,context:ja,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,21,30,33,36,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,29,32,35,37,"OpenTag"],["group",-9,14,17,18,19,20,39,40,41,42,"Entity",16,"Entity TextContent",-3,28,31,34,"TextContent Entity"]],propSources:[Da],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zbkWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOa!R!R7tP;=`<%l7S!Z8OYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{ihSkWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbhSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXhSa!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TakWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOb!R!RAwP;=`<%lAY!ZBRYkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbhSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbhSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXhSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYlhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_khS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_X`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!a`!cpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!a`!cp!dPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!a`!cpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!a`!cpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!a`!cpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!a`!cpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!a`!cpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!a`!cpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!a`!cpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!cpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO{PP!-nP;=`<%l!-Sq!-xS!cp{POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!a`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!a`{POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!a`!cpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!a`!cpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!a`!cpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!a`!cpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!a`!cpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!a`!cpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!cpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOxPP!7TP;=`<%l!6Vq!7]V!cpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!a`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!a`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let Q=l.type.id;if(Q==xa)return Se(l,o,a);if(Q==ka)return Se(l,o,t);if(Q==wa)return Se(l,o,i);if(Q==WO&&s.length){let u=l.node,c=u.firstChild,h=c&&aO(c,o),f;if(h){for(let p of s)if(p.tag==h&&(!p.attrs||p.attrs(f||(f=IO(u,o))))){let g=u.lastChild;return{parser:p.parser,overlay:[{from:c.to,to:g.type.id==Ya?g.from:u.to}]}}}}if(r&&Q==qO){let u=l.node,c;if(c=u.firstChild){let h=r[o.read(c.from,c.to)];if(h)for(let f of h){if(f.tagName&&f.tagName!=aO(u.parent,o))continue;let p=u.lastChild;if(p.type.id==be){let g=p.from+1,$=p.lastChild,x=p.to-($&&$.isError?0:1);if(x>g)return{parser:f.parser,overlay:[{from:g,to:x}]}}else if(p.type.id==jO)return{parser:f.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}const La=96,iO=1,Ma=97,Fa=98,rO=2,EO=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Ka=58,Ha=40,NO=95,ei=91,K=45,Oi=46,ti=35,ai=37;function re(O){return O>=65&&O<=90||O>=97&&O<=122||O>=161}function ii(O){return O>=48&&O<=57}const ri=new b((O,e)=>{for(let a=!1,t=0,i=0;;i++){let{next:s}=O;if(re(s)||s==K||s==NO||a&&ii(s))!a&&(s!=K||i>0)&&(a=!0),t===i&&s==K&&t++,O.advance();else{a&&O.acceptToken(s==Ha?Ma:t==2&&e.canShift(rO)?rO:Fa);break}}}),si=new b(O=>{if(EO.includes(O.peek(-1))){let{next:e}=O;(re(e)||e==NO||e==ti||e==Oi||e==ei||e==Ka||e==K)&&O.acceptToken(La)}}),li=new b(O=>{if(!EO.includes(O.peek(-1))){let{next:e}=O;if(e==ai&&(O.advance(),O.acceptToken(iO)),re(e)){do O.advance();while(re(O.next));O.acceptToken(iO)}}}),ni=oe({"AtKeyword import charset namespace keyframes media supports":n.definitionKeyword,"from to selector":n.keyword,NamespaceName:n.namespace,KeyframeName:n.labelName,KeyframeRangeName:n.operatorKeyword,TagName:n.tagName,ClassName:n.className,PseudoClassName:n.constant(n.className),IdName:n.labelName,"FeatureName PropertyName":n.propertyName,AttributeName:n.attributeName,NumberLiteral:n.number,KeywordQuery:n.keyword,UnaryQueryOp:n.operatorKeyword,"CallTag ValueName":n.atom,VariableName:n.variableName,Callee:n.operatorKeyword,Unit:n.unit,"UniversalSelector NestingSelector":n.definitionOperator,MatchOp:n.compareOperator,"ChildOp SiblingOp, LogicOp":n.logicOperator,BinOp:n.arithmeticOperator,Important:n.modifier,Comment:n.blockComment,ColorLiteral:n.color,"ParenthesizedContent StringLiteral":n.string,":":n.punctuation,"PseudoOp #":n.derefOperator,"; ,":n.separator,"( )":n.paren,"[ ]":n.squareBracket,"{ }":n.brace}),oi={__proto__:null,lang:32,"nth-child":32,"nth-last-child":32,"nth-of-type":32,"nth-last-of-type":32,dir:32,"host-context":32,url:60,"url-prefix":60,domain:60,regexp:60,selector:134},ci={__proto__:null,"@import":114,"@media":138,"@charset":142,"@namespace":146,"@keyframes":152,"@supports":164},Qi={__proto__:null,not:128,only:128},ui=v.deserialize({version:14,states:"9bQYQ[OOO#_Q[OOP#fOWOOOOQP'#Cd'#CdOOQP'#Cc'#CcO#kQ[O'#CfO$_QXO'#CaO$fQ[O'#ChO$qQ[O'#DPO$vQ[O'#DTOOQP'#Ej'#EjO${QdO'#DeO%gQ[O'#DrO${QdO'#DtO%xQ[O'#DvO&TQ[O'#DyO&]Q[O'#EPO&kQ[O'#EROOQS'#Ei'#EiOOQS'#EU'#EUQYQ[OOO&rQXO'#CdO'gQWO'#DaO'lQWO'#EpO'wQ[O'#EpQOQWOOP(RO#tO'#C_POOO)C@X)C@XOOQP'#Cg'#CgOOQP,59Q,59QO#kQ[O,59QO(^Q[O'#EXO(xQWO,58{O)QQ[O,59SO$qQ[O,59kO$vQ[O,59oO(^Q[O,59sO(^Q[O,59uO(^Q[O,59vO)]Q[O'#D`OOQS,58{,58{OOQP'#Ck'#CkOOQO'#C}'#C}OOQP,59S,59SO)dQWO,59SO)iQWO,59SOOQP'#DR'#DROOQP,59k,59kOOQO'#DV'#DVO)nQ`O,59oOOQS'#Cp'#CpO${QdO'#CqO)vQvO'#CsO+TQtO,5:POOQO'#Cx'#CxO)iQWO'#CwO+iQWO'#CyOOQS'#Em'#EmOOQO'#Dh'#DhO+nQ[O'#DoO+|QWO'#EqO&]Q[O'#DmO,[QWO'#DpOOQO'#Er'#ErO({QWO,5:^O,aQpO,5:`OOQS'#Dx'#DxO,iQWO,5:bO,nQ[O,5:bOOQO'#D{'#D{O,vQWO,5:eO,{QWO,5:kO-TQWO,5:mOOQS-E8S-E8SO${QdO,59{O-]Q[O'#EZO-jQWO,5;[O-jQWO,5;[POOO'#ET'#ETP-uO#tO,58yPOOO,58y,58yOOQP1G.l1G.lO.lQXO,5:sOOQO-E8V-E8VOOQS1G.g1G.gOOQP1G.n1G.nO)dQWO1G.nO)iQWO1G.nOOQP1G/V1G/VO.yQ`O1G/ZO/dQXO1G/_O/zQXO1G/aO0bQXO1G/bO0xQWO,59zO0}Q[O'#DOO1UQdO'#CoOOQP1G/Z1G/ZO${QdO1G/ZO1]QpO,59]OOQS,59_,59_O${QdO,59aO1eQWO1G/kOOQS,59c,59cO1jQ!bO,59eO1rQWO'#DhO1}QWO,5:TO2SQWO,5:ZO&]Q[O,5:VO&]Q[O'#E[O2[QWO,5;]O2gQWO,5:XO(^Q[O,5:[OOQS1G/x1G/xOOQS1G/z1G/zOOQS1G/|1G/|O2xQWO1G/|O2}QdO'#D|OOQS1G0P1G0POOQS1G0V1G0VOOQS1G0X1G0XO3YQtO1G/gOOQO,5:u,5:uO3pQ[O,5:uOOQO-E8X-E8XO3}QWO1G0vPOOO-E8R-E8RPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$u7+$uO${QdO7+$uOOQS1G/f1G/fO4YQXO'#EoO4aQWO,59jO4fQtO'#EVO5ZQdO'#ElO5eQWO,59ZO5jQpO7+$uOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%V7+%VO5rQWO1G/PO${QdO1G/oOOQO1G/u1G/uOOQO1G/q1G/qO5wQWO,5:vOOQO-E8Y-E8YO6VQXO1G/vOOQS7+%h7+%hO6^QYO'#CsOOQO'#EO'#EOO6iQ`O'#D}OOQO'#D}'#D}O6tQWO'#E]O6|QdO,5:hOOQS,5:h,5:hO7XQtO'#EYO${QdO'#EYO8VQdO7+%ROOQO7+%R7+%ROOQO1G0a1G0aO8jQpO<T![;'S%^;'S;=`%o<%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^l;nYo`#b[Oy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^l[[o`#b[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^n?VSp^Oy%^z;'S%^;'S;=`%o<%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^n@VU#_QOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o<%lO%^~AUSo`#X~Oy%^z;'S%^;'S;=`%o<%lO%^lAg[#b[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o<%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o<%lO%^nC^S!W^Oy%^z;'S%^;'S;=`%o<%lO%^dCoSzSOy%^z;'S%^;'S;=`%o<%lO%^bDQU|QOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o<%lO%^bDkS|Qo`Oy%^z;'S%^;'S;=`%o<%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bEk[!YQo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bFfSxQOy%^z;'S%^;'S;=`%o<%lO%^lFwSv[Oy%^z;'S%^;'S;=`%o<%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o<%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o<%lO%^bHYS!`Qo`Oy%^z;'S%^;'S;=`%o<%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o<%lO%^fIQS!RUOy%^z;'S%^;'S;=`%o<%lO%^nIcS!Q^Oy%^z;'S%^;'S;=`%o<%lO%^fItU!PQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^`JZP;=`<%l$}",tokenizers:[si,li,ri,1,2,3,4,new te("m~RRYZ[z{a~~g~aO#Z~~dP!P!Qg~lO#[~~",28,102)],topRules:{StyleSheet:[0,4],Styles:[1,84]},specialized:[{term:97,get:O=>oi[O]||-1},{term:56,get:O=>ci[O]||-1},{term:98,get:O=>Qi[O]||-1}],tokenPrec:1169});let $e=null;function ge(){if(!$e&&typeof document=="object"&&document.body){let{style:O}=document.body,e=[],a=new Set;for(let t in O)t!="cssText"&&t!="cssFloat"&&typeof O[t]=="string"&&(/[A-Z]/.test(t)&&(t=t.replace(/[A-Z]/g,i=>"-"+i.toLowerCase())),a.has(t)||(e.push(t),a.add(t)));$e=e.sort().map(t=>({type:"property",label:t}))}return $e||[]}const sO=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(O=>({type:"class",label:O})),lO=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(O=>({type:"keyword",label:O})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(O=>({type:"constant",label:O}))),fi=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(O=>({type:"type",label:O})),Y=/^(\w[\w-]*|-\w[\w-]*|)$/,hi=/^-(-[\w-]*)?$/;function di(O,e){var a;if((O.name=="("||O.type.isError)&&(O=O.parent||O),O.name!="ArgList")return!1;let t=(a=O.parent)===null||a===void 0?void 0:a.firstChild;return(t==null?void 0:t.name)!="Callee"?!1:e.sliceString(t.from,t.to)=="var"}const nO=new wO,pi=["Declaration"];function Si(O){for(let e=O;;){if(e.type.isTop)return e;if(!(e=e.parent))return O}}function BO(O,e,a){if(e.to-e.from>4096){let t=nO.get(e);if(t)return t;let i=[],s=new Set,r=e.cursor(Te.IncludeAnonymous);if(r.firstChild())do for(let l of BO(O,r.node,a))s.has(l.label)||(s.add(l.label),i.push(l));while(r.nextSibling());return nO.set(e,i),i}else{let t=[],i=new Set;return e.cursor().iterate(s=>{var r;if(a(s)&&s.matchContext(pi)&&((r=s.node.nextSibling)===null||r===void 0?void 0:r.name)==":"){let l=O.sliceString(s.from,s.to);i.has(l)||(i.add(l),t.push({label:l,type:"variable"}))}}),t}}const $i=O=>e=>{let{state:a,pos:t}=e,i=q(a).resolveInner(t,-1),s=i.type.isError&&i.from==i.to-1&&a.doc.sliceString(i.from,i.to)=="-";if(i.name=="PropertyName"||(s||i.name=="TagName")&&/^(Block|Styles)$/.test(i.resolve(i.to).name))return{from:i.from,options:ge(),validFor:Y};if(i.name=="ValueName")return{from:i.from,options:lO,validFor:Y};if(i.name=="PseudoClassName")return{from:i.from,options:sO,validFor:Y};if(O(i)||(e.explicit||s)&&di(i,a.doc))return{from:O(i)||s?i.from:t,options:BO(a.doc,Si(i),O),validFor:hi};if(i.name=="TagName"){for(let{parent:o}=i;o;o=o.parent)if(o.name=="Block")return{from:i.from,options:ge(),validFor:Y};return{from:i.from,options:fi,validFor:Y}}if(!e.explicit)return null;let r=i.resolve(t),l=r.childBefore(t);return l&&l.name==":"&&r.name=="PseudoClassSelector"?{from:t,options:sO,validFor:Y}:l&&l.name==":"&&r.name=="Declaration"||r.name=="ArgList"?{from:t,options:lO,validFor:Y}:r.name=="Block"||r.name=="Styles"?{from:t,options:ge(),validFor:Y}:null},gi=$i(O=>O.name=="VariableName"),se=ce.define({name:"css",parser:ui.configure({props:[Qe.add({Declaration:A()}),ue.add({Block:kO})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function mi(){return new fe(se,se.data.of({autocomplete:gi}))}const Xi=303,oO=1,Pi=2,Zi=304,bi=306,xi=307,ki=3,wi=4,yi=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],DO=125,Yi=59,cO=47,Ti=42,Ui=43,vi=45,Vi=new vO({start:!1,shift(O,e){return e==ki||e==wi||e==bi?O:e==xi},strict:!1}),Ri=new b((O,e)=>{let{next:a}=O;(a==DO||a==-1||e.context)&&O.acceptToken(Zi)},{contextual:!0,fallback:!0}),_i=new b((O,e)=>{let{next:a}=O,t;yi.indexOf(a)>-1||a==cO&&((t=O.peek(1))==cO||t==Ti)||a!=DO&&a!=Yi&&a!=-1&&!e.context&&O.acceptToken(Xi)},{contextual:!0}),Ci=new b((O,e)=>{let{next:a}=O;if((a==Ui||a==vi)&&(O.advance(),a==O.next)){O.advance();let t=!e.context&&e.canShift(oO);O.acceptToken(t?oO:Pi)}},{contextual:!0}),Wi=oe({"get set async static":n.modifier,"for while do if else switch try catch finally return throw break continue default case":n.controlKeyword,"in of await yield void typeof delete instanceof":n.operatorKeyword,"let var const function class extends":n.definitionKeyword,"import export from":n.moduleKeyword,"with debugger as new":n.keyword,TemplateString:n.special(n.string),super:n.atom,BooleanLiteral:n.bool,this:n.self,null:n.null,Star:n.modifier,VariableName:n.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":n.function(n.variableName),VariableDefinition:n.definition(n.variableName),Label:n.labelName,PropertyName:n.propertyName,PrivatePropertyName:n.special(n.propertyName),"CallExpression/MemberExpression/PropertyName":n.function(n.propertyName),"FunctionDeclaration/VariableDefinition":n.function(n.definition(n.variableName)),"ClassDeclaration/VariableDefinition":n.definition(n.className),PropertyDefinition:n.definition(n.propertyName),PrivatePropertyDefinition:n.definition(n.special(n.propertyName)),UpdateOp:n.updateOperator,LineComment:n.lineComment,BlockComment:n.blockComment,Number:n.number,String:n.string,Escape:n.escape,ArithOp:n.arithmeticOperator,LogicOp:n.logicOperator,BitOp:n.bitwiseOperator,CompareOp:n.compareOperator,RegExp:n.regexp,Equals:n.definitionOperator,Arrow:n.function(n.punctuation),": Spread":n.punctuation,"( )":n.paren,"[ ]":n.squareBracket,"{ }":n.brace,"InterpolationStart InterpolationEnd":n.special(n.brace),".":n.derefOperator,", ;":n.separator,"@":n.meta,TypeName:n.typeName,TypeDefinition:n.definition(n.typeName),"type enum interface implements namespace module declare":n.definitionKeyword,"abstract global Privacy readonly override":n.modifier,"is keyof unique infer":n.operatorKeyword,JSXAttributeValue:n.attributeValue,JSXText:n.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":n.angleBracket,"JSXIdentifier JSXNameSpacedName":n.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":n.attributeName,"JSXBuiltin/JSXIdentifier":n.standard(n.tagName)}),qi={__proto__:null,export:14,as:19,from:27,default:30,async:35,function:36,extends:46,this:50,true:58,false:58,null:70,void:74,typeof:78,super:96,new:130,delete:146,yield:155,await:159,class:164,public:221,private:221,protected:221,readonly:223,instanceof:242,satisfies:245,in:246,const:248,import:280,keyof:335,unique:339,infer:345,is:381,abstract:401,implements:403,type:405,let:408,var:410,using:413,interface:419,enum:423,namespace:429,module:431,declare:435,global:439,for:458,of:467,while:470,with:474,do:478,if:482,else:484,switch:488,case:494,try:500,catch:504,finally:508,return:512,throw:516,break:520,continue:524,debugger:528},ji={__proto__:null,async:117,get:119,set:121,declare:181,public:183,private:183,protected:183,static:185,abstract:187,override:189,readonly:195,accessor:197,new:385},zi={__proto__:null,"<":137},Gi=v.deserialize({version:14,states:"$6tO`QUOOO%TQUOOO'WQWOOP(eOSOOO*sQ(CjO'#CfO*zOpO'#CgO+YO!bO'#CgO+hO07`O'#DZO-yQUO'#DaO.ZQUO'#DlO%TQUO'#DvO0_QUO'#EOOOQ(CY'#EW'#EWO0xQSO'#ETOOQO'#Ei'#EiOOQO'#Ic'#IcO1QQSO'#GkO1]QSO'#EhO1bQSO'#EhO3dQ(CjO'#JdO6TQ(CjO'#JeO6qQSO'#FWO6vQ#tO'#FoOOQ(CY'#F`'#F`O7RO&jO'#F`O7aQ,UO'#FvO8wQSO'#FuOOQ(CY'#Je'#JeOOQ(CW'#Jd'#JdO8|QSO'#GoOOQQ'#KP'#KPO9XQSO'#IPO9^Q(C[O'#IQOOQQ'#JQ'#JQOOQQ'#IU'#IUQ`QUOOO%TQUO'#DnO9fQUO'#DzO9mQUO'#D|O9SQSO'#GkO9tQ,UO'#ClO:SQSO'#EgO:_QSO'#ErO:dQ,UO'#F_O;RQSO'#GkOOQO'#KQ'#KQO;WQSO'#KQO;fQSO'#GsO;fQSO'#GtO;fQSO'#GvO9SQSO'#GyO<]QSO'#G|O=tQSO'#CbO>UQSO'#HYO>^QSO'#H`O>^QSO'#HbO`QUO'#HdO>^QSO'#HfO>^QSO'#HiO>cQSO'#HoO>hQ(C]O'#HuO%TQUO'#HwO>sQ(C]O'#HyO?OQ(C]O'#H{O9^Q(C[O'#H}O?ZQ(CjO'#CfO@]QWO'#DfQOQSOOO%TQUO'#D|O@sQSO'#EPO9tQ,UO'#EgOAOQSO'#EgOAZQ`O'#F_OOQQ'#Cd'#CdOOQ(CW'#Dk'#DkOOQ(CW'#Jh'#JhO%TQUO'#JhOOQO'#Jl'#JlOOQO'#I`'#I`OBZQWO'#E`OOQ(CW'#E_'#E_OCVQ(C`O'#E`OCaQWO'#ESOOQO'#Jk'#JkOCuQWO'#JlOESQWO'#ESOCaQWO'#E`PEaO?MpO'#C`POOO)CDo)CDoOOOO'#IV'#IVOElOpO,59ROOQ(CY,59R,59ROOOO'#IW'#IWOEzO!bO,59RO%TQUO'#D]OOOO'#IY'#IYOFYO07`O,59uOOQ(CY,59u,59uOFhQUO'#IZOF{QSO'#JfOH}QbO'#JfO+vQUO'#JfOIUQSO,59{OIlQSO'#EiOIyQSO'#JtOJUQSO'#JsOJUQSO'#JsOJ^QSO,5;VOJcQSO'#JrOOQ(CY,5:W,5:WOJjQUO,5:WOLkQ(CjO,5:bOM[QSO,5:jOMuQ(C[O'#JqOM|QSO'#JpO8|QSO'#JpONbQSO'#JpONjQSO,5;UONoQSO'#JpO!!wQbO'#JeOOQ(CY'#Cf'#CfO%TQUO'#EOO!#gQ`O,5:oOOQO'#Jm'#JmOOQO-EkOOQQ'#JY'#JYOOQQ,5>l,5>lOOQQ-EqQ(CjO,5:hOOQO,5@l,5@lO!?bQ,UO,5=VO!?pQ(C[O'#JZO8wQSO'#JZO!@RQ(C[O,59WO!@^QWO,59WO!@fQ,UO,59WO9tQ,UO,59WO!@qQSO,5;SO!@yQSO'#HXO!A[QSO'#KUO%TQUO,5;wO!7[QWO,5;yO!AdQSO,5=rO!AiQSO,5=rO!AnQSO,5=rO9^Q(C[O,5=rO;fQSO,5=bOOQO'#Cr'#CrO!A|QWO,5=_O!BUQ,UO,5=`O!BaQSO,5=bO!BfQ`O,5=eO!BnQSO'#KQO>cQSO'#HOO9SQSO'#HQO!BsQSO'#HQO9tQ,UO'#HSO!BxQSO'#HSOOQQ,5=h,5=hO!B}QSO'#HTO!CVQSO'#ClO!C[QSO,58|O!CfQSO,58|O!EkQUO,58|OOQQ,58|,58|O!E{Q(C[O,58|O%TQUO,58|O!HWQUO'#H[OOQQ'#H]'#H]OOQQ'#H^'#H^O`QUO,5=tO!HnQSO,5=tO`QUO,5=zO`QUO,5=|O!HsQSO,5>OO`QUO,5>QO!HxQSO,5>TO!H}QUO,5>ZOOQQ,5>a,5>aO%TQUO,5>aO9^Q(C[O,5>cOOQQ,5>e,5>eO!MXQSO,5>eOOQQ,5>g,5>gO!MXQSO,5>gOOQQ,5>i,5>iO!M^QWO'#DXO%TQUO'#JhO!M{QWO'#JhO!NjQWO'#DgO!N{QWO'#DgO##^QUO'#DgO##eQSO'#JgO##mQSO,5:QO##rQSO'#EmO#$QQSO'#JuO#$YQSO,5;WO#$_QWO'#DgO#$lQWO'#EROOQ(CY,5:k,5:kO%TQUO,5:kO#$sQSO,5:kO>cQSO,5;RO!@^QWO,5;RO!@fQ,UO,5;RO9tQ,UO,5;RO#${QSO,5@SO#%QQ!LQO,5:oOOQO-E<^-E<^O#&WQ(C`O,5:zOCaQWO,5:nO#&bQWO,5:nOCaQWO,5:zO!@RQ(C[O,5:nOOQ(CW'#Ec'#EcOOQO,5:z,5:zO%TQUO,5:zO#&oQ(C[O,5:zO#&zQ(C[O,5:zO!@^QWO,5:nOOQO,5;Q,5;QO#'YQ(C[O,5:zPOOO'#IT'#ITP#'nO?MpO,58zPOOO,58z,58zOOOO-EuO+vQUO,5>uOOQO,5>{,5>{O#(YQUO'#IZOOQO-E^QSO1G3jO$.VQUO1G3lO$2ZQUO'#HkOOQQ1G3o1G3oO$2hQSO'#HqO>cQSO'#HsOOQQ1G3u1G3uO$2pQUO1G3uO9^Q(C[O1G3{OOQQ1G3}1G3}OOQ(CW'#GW'#GWO9^Q(C[O1G4PO9^Q(C[O1G4RO$6wQSO,5@SO!){QUO,5;XO8|QSO,5;XO>cQSO,5:RO!){QUO,5:RO!@^QWO,5:RO$6|Q$IUO,5:ROOQO,5;X,5;XO$7WQWO'#I[O$7nQSO,5@ROOQ(CY1G/l1G/lO$7vQWO'#IbO$8QQSO,5@aOOQ(CW1G0r1G0rO!N{QWO,5:ROOQO'#I_'#I_O$8YQWO,5:mOOQ(CY,5:m,5:mO#$vQSO1G0VOOQ(CY1G0V1G0VO%TQUO1G0VOOQ(CY1G0m1G0mO>cQSO1G0mO!@^QWO1G0mO!@fQ,UO1G0mOOQ(CW1G5n1G5nO!@RQ(C[O1G0YOOQO1G0f1G0fO%TQUO1G0fO$8aQ(C[O1G0fO$8lQ(C[O1G0fO!@^QWO1G0YOCaQWO1G0YO$8zQ(C[O1G0fOOQO1G0Y1G0YO$9`Q(CjO1G0fPOOO-EuO$9|QSO1G5lO$:UQSO1G5yO$:^QbO1G5zO8|QSO,5>{O$:hQ(CjO1G5wO%TQUO1G5wO$:xQ(C[O1G5wO$;ZQSO1G5vO$;ZQSO1G5vO8|QSO1G5vO$;cQSO,5?OO8|QSO,5?OOOQO,5?O,5?OO$;wQSO,5?OO$$XQSO,5?OOOQO-ExQ(CjO,5VOOQQ,5>V,5>VO%TQUO'#HlO%(dQSO'#HnOOQQ,5>],5>]O8|QSO,5>]OOQQ,5>_,5>_OOQQ7+)a7+)aOOQQ7+)g7+)gOOQQ7+)k7+)kOOQQ7+)m7+)mO%(iQWO1G5nO%(}Q$IUO1G0sO%)XQSO1G0sOOQO1G/m1G/mO%)dQ$IUO1G/mO>cQSO1G/mO!){QUO'#DgOOQO,5>v,5>vOOQO-E|,5>|OOQO-E<`-E<`O!@^QWO1G/mOOQO-E<]-E<]OOQ(CY1G0X1G0XOOQ(CY7+%q7+%qO#$vQSO7+%qOOQ(CY7+&X7+&XO>cQSO7+&XO!@^QWO7+&XOOQO7+%t7+%tO$9`Q(CjO7+&QOOQO7+&Q7+&QO%TQUO7+&QO%)nQ(C[O7+&QO!@RQ(C[O7+%tO!@^QWO7+%tO%)yQ(C[O7+&QO%*XQ(CjO7++cO%TQUO7++cO%*iQSO7++bO%*iQSO7++bOOQO1G4j1G4jO8|QSO1G4jO%*qQSO1G4jOOQO7+%y7+%yO#$vQSO<wOOQO-ExO%TQUO,5>xOOQO-E<[-E<[O%2qQSO1G5pOOQ(CY<bQ$IUO1G0xO%>iQ$IUO1G0xO%@aQ$IUO1G0xO%@tQ(CjO<WOOQQ,5>Y,5>YO%N_QSO1G3wO8|QSO7+&_O!){QUO7+&_OOQO7+%X7+%XO%NdQ$IUO1G5zO>cQSO7+%XOOQ(CY<cQSO<cQSO7+)cO&5{QSO<zAN>zO%TQUOAN?WOOQO<TQSO<= cOOQQG27jG27jO9^Q(C[OG27jO!){QUO1G4uO&>]QSO7++tO%LpQSOANAxOOQQANAxANAxO!&VQ,UOANAxO&>eQSOANAxOOQQANAzANAzO9^Q(C[OANAzO#MzQSOANAzOOQO'#HV'#HVOOQO7+*d7+*dOOQQG22tG22tOOQQANEOANEOOOQQANEPANEPOOQQANBSANBSO&>mQSOANBSOOQQ<rQSOLD,iO&>zQ$IUO7+'sO&@pQ$IUO7+'uO&BfQ,UOG26{OOQO<ROPYXXYXkYXyYXzYX|YX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX!VYX!WYX~O#yYX~P#@lOP$[OX:XOk9{Oy#xOz#yO|#zO!e9}O!f#vO!h#wO!l$[O#g9yO#h9zO#i9zO#j9zO#k9|O#l9}O#m9}O#n:WO#o9}O#q:OO#s:QO#u:SO#v:TO(SVO(c$YO(j#{O(k#|O~O#y.hO~P#ByO#X:YO#{:YO#y(XX!W(XX~PN}O^'Za!V'Za'l'Za'j'Za!g'Za!S'Zao'Za!X'Za%a'Za!a'Za~P!7sOP#fiX#fi^#fik#fiz#fi!V#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi'l#fi(S#fi(c#fi'j#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~P#,`O^#zi!V#zi'l#zi'j#zi!S#zi!g#zio#zi!X#zi%a#zi!a#zi~P!7sO$W.mO$Y.mO~O$W.nO$Y.nO~O!a)^O#X.oO!X$^X$T$^X$W$^X$Y$^X$a$^X~O!U.pO~O!X)aO$T.rO$W)`O$Y)`O$a.sO~O!V:UO!W(WX~P#ByO!W.tO~O!a)^O$a(lX~O$a.vO~Oq)pO(T)qO(U.yO~Ol.|O!S.}O'wTO'zUO~O!VcX!acX!gcX!g$sX(ccX~P!/ZO!g/TO~P#,`O!V/UO!a#tO(c'fO!g(pX~O!g/ZO~O!U*RO'u%_O!g(pP~O#d/]O~O!S$sX!V$sX!a$zX~P!/ZO!V/^O!S(qX~P#,`O!a/`O~O!S/bO~Ok/fO!a#tO!h%]O(O%QO(c'fO~O'u/hO~O!a+XO~O^%fO!V/lO'l%fO~O!W/nO~P!3XO!]/oO!^/oO'v!kO(V!lO~O|/qO(V!lO~O#T/rO~O'u&POd'`X!V'`X~O!V*kOd(Pa~Od/wO~Oy/xOz/xO|/yOgva(jva(kva!Vva#Xva~Odva#yva~P$ hOy)uO|)vOg$la(j$la(k$la!V$la#X$la~Od$la#y$la~P$!^Oy)uO|)vOg$na(j$na(k$na!V$na#X$na~Od$na#y$na~P$#PO#d/{O~Od$|a!V$|a#X$|a#y$|a~P!0dO!a#tO~O#d0OO~O!V*|O^(ua'l(ua~Oy#xOz#yO|#zO!f#vO!h#wO(SVOP!niX!nik!ni!V!ni!e!ni!l!ni#g!ni#h!ni#i!ni#j!ni#k!ni#l!ni#m!ni#n!ni#o!ni#q!ni#s!ni#u!ni#v!ni(c!ni(j!ni(k!ni~O^!ni'l!ni'j!ni!S!ni!g!nio!ni!X!ni%a!ni!a!ni~P$$nOg.TO!X'UO%a.SO~Oi0YO'u0XO~P!1UO!a+XO^'}a!X'}a'l'}a!V'}a~O#d0`O~OXYX!VcX!WcX~O!V0aO!W(yX~O!W0cO~OX0dO~O'u+aO'wTO'zUO~O!X%vO'u%_O]'hX!V'hX~O!V+fO](xa~O!g0iO~P!7sOX0lO~O]0mO~O#X0pO~Og0sO!X${O~O(V(sO!W(vP~Og0|O!X0yO%a0{O(O%QO~OX1WO!V1UO!W(wX~O!W1XO~O]1ZO^%fO'l%fO~O'u#lO'wTO'zUO~O#X$dO#{$dOP(XXX(XXk(XXy(XXz(XX|(XX!V(XX!e(XX!h(XX!l(XX#g(XX#h(XX#i(XX#j(XX#k(XX#l(XX#m(XX#n(XX#q(XX#s(XX#u(XX#v(XX(S(XX(c(XX(j(XX(k(XX~O#o1^O&R1_O^(XX!f(XX~P$+dO#X$dO#o1^O&R1_O~O^1aO~P%TO^1cO~O&[1fOP&YiQ&YiV&Yi^&Yia&Yib&Yii&Yik&Yil&Yim&Yis&Yiu&Yiw&Yi|&Yi!Q&Yi!R&Yi!X&Yi!c&Yi!h&Yi!k&Yi!l&Yi!m&Yi!o&Yi!q&Yi!t&Yi!x&Yi#p&Yi$Q&Yi$U&Yi%`&Yi%b&Yi%d&Yi%e&Yi%f&Yi%i&Yi%k&Yi%n&Yi%o&Yi%q&Yi%}&Yi&T&Yi&V&Yi&X&Yi&Z&Yi&^&Yi&d&Yi&j&Yi&l&Yi&n&Yi&p&Yi&r&Yi'j&Yi'u&Yi'w&Yi'z&Yi(S&Yi(b&Yi(o&Yi!W&Yi_&Yi&a&Yi~O_1lO!W1jO&a1kO~P`O!XXO!h1nO~O&h,iOP&ciQ&ciV&ci^&cia&cib&cii&cik&cil&cim&cis&ciu&ciw&ci|&ci!Q&ci!R&ci!X&ci!c&ci!h&ci!k&ci!l&ci!m&ci!o&ci!q&ci!t&ci!x&ci#p&ci$Q&ci$U&ci%`&ci%b&ci%d&ci%e&ci%f&ci%i&ci%k&ci%n&ci%o&ci%q&ci%}&ci&T&ci&V&ci&X&ci&Z&ci&^&ci&d&ci&j&ci&l&ci&n&ci&p&ci&r&ci'j&ci'u&ci'w&ci'z&ci(S&ci(b&ci(o&ci!W&ci&[&ci_&ci&a&ci~O!S1tO~O!V!Za!W!Za~P#ByOl!mO|!nO!U1zO(V!lO!V'OX!W'OX~P?wO!V,yO!W(Za~O!V'UX!W'UX~P!6{O!V,|O!W(ia~O!W2RO~P'WO^%fO#X2[O'l%fO~O^%fO!a#tO#X2[O'l%fO~O^%fO!a#tO!l2`O#X2[O'l%fO(c'fO~O^%fO'l%fO~P!7sO!V$`Oo$ka~O!S&}i!V&}i~P!7sO!V'zO!S(Yi~O!V(RO!S(gi~O!S(hi!V(hi~P!7sO!V(ei!g(ei^(ei'l(ei~P!7sO#X2bO!V(ei!g(ei^(ei'l(ei~O!V(_O!g(di~O|%`O!X%aO!x]O#b2gO#c2fO'u%_O~O|%`O!X%aO#c2fO'u%_O~Og2nO!X'UO%a2mO~Og2nO!X'UO%a2mO(O%QO~O#dvaPvaXva^vakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva'lva(Sva(cva!gva!Sva'jvaova!Xva%ava!ava~P$ hO#d$laP$laX$la^$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la'l$la(S$la(c$la!g$la!S$la'j$lao$la!X$la%a$la!a$la~P$!^O#d$naP$naX$na^$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na'l$na(S$na(c$na!g$na!S$na'j$nao$na!X$na%a$na!a$na~P$#PO#d$|aP$|aX$|a^$|ak$|az$|a!V$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a'l$|a(S$|a(c$|a!g$|a!S$|a'j$|a#X$|ao$|a!X$|a%a$|a!a$|a~P#,`O^#[q!V#[q'l#[q'j#[q!S#[q!g#[qo#[q!X#[q%a#[q!a#[q~P!7sOd'PX!V'PX~P!'oO!V.^Od(]a~O!U2vO!V'QX!g'QX~P%TO!V.aO!g(^a~O!V.aO!g(^a~P!7sO!S2yO~O#y!ja!W!ja~PJqO#y!ba!V!ba!W!ba~P#ByO#y!na!W!na~P!:^O#y!pa!W!pa~P!pO^#wy!V#wy'l#wy'j#wy!S#wy!g#wyo#wy!X#wy%a#wy!a#wy~P!7sOg;lOy)uO|)vO(j)xO(k)zO~OP#fiX#fik#fiz#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi#y#fi(S#fi(c#fi!V#fi!W#fi~P%AhO!f#vOP(RXX(RXg(RXk(RXy(RXz(RX|(RX!e(RX!h(RX!l(RX#g(RX#h(RX#i(RX#j(RX#k(RX#l(RX#m(RX#n(RX#o(RX#q(RX#s(RX#u(RX#v(RX#y(RX(S(RX(c(RX(j(RX(k(RX!V(RX!W(RX~O#y#zi!V#zi!W#zi~P#ByO#y!ni!W!ni~P$$nO!W6_O~O!V'Za!W'Za~P#ByO!a#tO(c'fO!V'[a!g'[a~O!V/UO!g(pi~O!V/UO!a#tO!g(pi~Od$uq!V$uq#X$uq#y$uq~P!0dO!S'^a!V'^a~P#,`O!a6fO~O!V/^O!S(qi~P#,`O!V/^O!S(qi~O!S6jO~O!a#tO#o6oO~Ok6pO!a#tO(c'fO~O!S6rO~Od$wq!V$wq#X$wq#y$wq~P!0dO^$iy!V$iy'l$iy'j$iy!S$iy!g$iyo$iy!X$iy%a$iy!a$iy~P!7sO!a5jO~O!V4VO!X(ra~O^#[y!V#[y'l#[y'j#[y!S#[y!g#[yo#[y!X#[y%a#[y!a#[y~P!7sOX6wO~O!V0aO!W(yi~O]6}O~O(V(sO!V'cX!W'cX~O!V4mO!W(va~OikO'u7UO~P.bO!W7XO~P%$wOl!mO|7YO'wTO'zUO(V!lO(b!rO~O!X0yO~O!X0yO%a7[O~Og7_O!X0yO%a7[O~OX7dO!V'fa!W'fa~O!V1UO!W(wi~O!g7hO~O!g7iO~O!g7lO~O!g7lO~P%TO^7nO~O!a7oO~O!g7pO~O!V(hi!W(hi~P#ByO^%fO#X7xO'l%fO~O!V(ey!g(ey^(ey'l(ey~P!7sO!V(_O!g(dy~O!X'UO%a7{O~O#d$uqP$uqX$uq^$uqk$uqz$uq!V$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq'l$uq(S$uq(c$uq!g$uq!S$uq'j$uq#X$uqo$uq!X$uq%a$uq!a$uq~P#,`O#d$wqP$wqX$wq^$wqk$wqz$wq!V$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq'l$wq(S$wq(c$wq!g$wq!S$wq'j$wq#X$wqo$wq!X$wq%a$wq!a$wq~P#,`O!V'Qi!g'Qi~P!7sO#y#[q!V#[q!W#[q~P#ByOy/xOz/xO|/yOPvaXvagvakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva#yva(Sva(cva(jva(kva!Vva!Wva~Oy)uO|)vOP$laX$lag$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la#y$la(S$la(c$la(j$la(k$la!V$la!W$la~Oy)uO|)vOP$naX$nag$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na#y$na(S$na(c$na(j$na(k$na!V$na!W$na~OP$|aX$|ak$|az$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a#y$|a(S$|a(c$|a!V$|a!W$|a~P%AhO#y$hq!V$hq!W$hq~P#ByO#y$iq!V$iq!W$iq~P#ByO!W8VO~O#y8WO~P!0dO!a#tO!V'[i!g'[i~O!a#tO(c'fO!V'[i!g'[i~O!V/UO!g(pq~O!S'^i!V'^i~P#,`O!V/^O!S(qq~O!S8^O~P#,`O!S8^O~Od(Qy!V(Qy~P!0dO!V'aa!X'aa~P#,`O^%Tq!X%Tq'l%Tq!V%Tq~P#,`OX8cO~O!V0aO!W(yq~O#X8gO!V'ca!W'ca~O!V4mO!W(vi~P#ByOPYXXYXkYXyYXzYX|YX!SYX!VYX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX~O!a%RX#o%RX~P&2hO!X0yO%a8kO~O'wTO'zUO(V8pO~O!V1UO!W(wq~O!g8sO~O!g8tO~O!g8uO~O!g8uO~P%TO#X8xO!V#ay!W#ay~O!V#ay!W#ay~P#ByO!X'UO%a8}O~O#y#wy!V#wy!W#wy~P#ByOP$uiX$uik$uiz$ui!e$ui!f$ui!h$ui!l$ui#g$ui#h$ui#i$ui#j$ui#k$ui#l$ui#m$ui#n$ui#o$ui#q$ui#s$ui#u$ui#v$ui#y$ui(S$ui(c$ui!V$ui!W$ui~P%AhOy)uO|)vO(k)zOP%XiX%Xig%Xik%Xiz%Xi!e%Xi!f%Xi!h%Xi!l%Xi#g%Xi#h%Xi#i%Xi#j%Xi#k%Xi#l%Xi#m%Xi#n%Xi#o%Xi#q%Xi#s%Xi#u%Xi#v%Xi#y%Xi(S%Xi(c%Xi(j%Xi!V%Xi!W%Xi~Oy)uO|)vOP%ZiX%Zig%Zik%Ziz%Zi!e%Zi!f%Zi!h%Zi!l%Zi#g%Zi#h%Zi#i%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#q%Zi#s%Zi#u%Zi#v%Zi#y%Zi(S%Zi(c%Zi(j%Zi(k%Zi!V%Zi!W%Zi~O#y$iy!V$iy!W$iy~P#ByO#y#[y!V#[y!W#[y~P#ByO!a#tO!V'[q!g'[q~O!V/UO!g(py~O!S'^q!V'^q~P#,`O!S9UO~P#,`O!V0aO!W(yy~O!V4mO!W(vq~O!X0yO%a9]O~O!g9`O~O!X'UO%a9eO~OP$uqX$uqk$uqz$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq#y$uq(S$uq(c$uq!V$uq!W$uq~P%AhOP$wqX$wqk$wqz$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq#y$wq(S$wq(c$wq!V$wq!W$wq~P%AhOd%]!Z!V%]!Z#X%]!Z#y%]!Z~P!0dO!V'cq!W'cq~P#ByO!V#a!Z!W#a!Z~P#ByO#d%]!ZP%]!ZX%]!Z^%]!Zk%]!Zz%]!Z!V%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z'l%]!Z(S%]!Z(c%]!Z!g%]!Z!S%]!Z'j%]!Z#X%]!Zo%]!Z!X%]!Z%a%]!Z!a%]!Z~P#,`OP%]!ZX%]!Zk%]!Zz%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z#y%]!Z(S%]!Z(c%]!Z!V%]!Z!W%]!Z~P%AhOo(WX~P1jO'v!kO~P!){O!ScX!VcX#XcX~P&2hOPYXXYXkYXyYXzYX|YX!VYX!VcX!eYX!fYX!hYX!lYX#XYX#XcX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX~O!acX!gYX!gcX(ccX~P&HOOP9pOQ9pOa;aOb!hOikOk9pOlkOmkOskOu9pOw9pO|WO!QkO!RkO!XXO!c9sO!hZO!k9pO!l9pO!m9pO!o9tO!q9wO!t!gO$Q!jO$UfO'u)TO'wTO'zUO(SVO(b[O(o;_O~O!V:UO!W$ka~Oi%ROk$sOl$rOm$rOs%SOu%TOw:[O|$zO!X${O!c;fO!h$wO#c:bO$Q%XO$m:^O$o:`O$r%YO'u(kO'wTO'zUO(O%QO(S$tO~O#p)[O~P&LtO!WYX!WcX~P&HOO#d9xO~O!a#tO#d9xO~O#X:YO~O#o9}O~O#X:dO!V(hX!W(hX~O#X:YO!V(fX!W(fX~O#d:eO~Od:gO~P!0dO#d:lO~O#d:mO~O!a#tO#d:nO~O!a#tO#d:eO~O#y:oO~P#ByO#d:pO~O#d:qO~O#d:rO~O#d:sO~O#d:tO~O#d:uO~O#y:vO~P!0dO#y:wO~P!0dO$U~!f!|!}#P#Q#T#b#c#n(o$m$o$r%U%`%a%b%i%k%n%o%q%s~'pR$U(o#h!R'n'v#il#g#jky'o(V'o'u$W$Y$W~",goto:"$&O(}PPPP)OP)RP)cP*r.uPPPP5WPP5mP;h>mP?QP?QPPP?QP@pP?QP?QP?QP@tPP@yPAdPFZPPPF_PPPPF_I_PPPIeJ`PF_PLmPPPPN{F_PPPF_PF_P!#ZF_P!&n!'p!'yP!(l!(p!(lPPPPP!+z!'pPP!,h!-bP!0UF_F_!0Z!3d!7x!7x!;mPPP!;tF_PPPPPPPPPPP!?QP!@cPPF_!ApPF_PF_F_F_F_PF_!CSPP!FZP!I^P!Ib!Il!Ip!IpP!FWP!It!ItP!LwP!L{F_F_!MR#!T?QP?QP?Q?QP##_?Q?Q#%X?Q#'f?Q#)Y?Q?Q#)v#+r#+r#+v#,O#+r#,WP#+rP?Q#,p?Q#-x?Q?Q5WPPP#/TPPP#/m#/mP#/mP#0S#/mPP#0YP#0PP#0P#0l#0P#1W#1^5T)R#1a)RP#1h#1h#1hP)RP)RP)RP)RPP)RP#1n#1qP#1q)RP#1uP#1xP)RP)RP)RP)RP)RP)R)RPP#2O#2U#2`#2f#2l#2r#2x#3W#3^#3d#3n#3t#4O#4_#4e#5U#5h#5n#5t#6S#6i#7y#8X#8_#8e#8k#8q#8{#9R#9X#9c#9u#9{PPPPPPPPPP#:RPPPPPPP#:u#=|P#?]#?d#?lPPPP#Cv#Fl#MS#MV#MY#NR#NU#NX#N`#NhPP#Nn#Nr$ j$!i$!m$#RPP$#V$#]$#aP$#d$#h$#k$$a$$w$%_$%c$%f$%i$%o$%r$%v$%zR!zRmqOXs!Y#b%e&h&j&k&m,a,f1f1iY!tQ'U-R0y4tQ%kuQ%sxQ%z{Q&`!US&|!d,yQ'[!hS'b!q!wS*^${*cQ+_%tQ+l%|Q,Q&YQ-P'TQ-Z']Q-c'cQ/o*eQ1T,RR:c9t$|dOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{,^,a,f-V-_-m-s.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2v4q4{5]5^5a5t7Y7_7n7xS#o]9q!r)V$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ*n%UQ+d%vQ,S&]Q,Z&eQ.W:ZQ0V+VQ0Z+XQ0f+eQ1],XQ2j.TQ4_0aQ5S1UQ6Q2nQ6W:[Q6y4`R8O6R&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bt!mQ!q!t!w!x&|'T'U'b'c'd,y-P-R-c0y4t4v$Y$ri#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lQ%}{Q&z!dS'Q%a,|Q+d%vS.|)v/OQ/z*rQ0f+eQ0k+kQ1[,WQ1],XQ4_0aQ4h0mQ5V1WQ5W1ZQ6y4`Q6|4eQ7g5YQ8f6}R8q7dpnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iR,U&a&t^OPXYstuvy!Y!_!f!i!n#Q#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y'W'h'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;a;b[#ZWZ#U#X&}'x!S%bm#f#g#j%]%`(R(](^(_*y*z*|,],s-q-w-x-y-{1n2f2g5j5{Q%nwQ%rxS%w{%|Q&T!SQ'X!gQ'Z!hQ(f#qS*Q$w*US+^%s%tQ+b%vQ+{&WQ,P&YS-Y'[']Q.V(gQ/Y*RQ0_+_Q0e+eQ0g+fQ0j+jQ1O+|S1S,Q,RQ2W-ZQ3f/UQ4^0aQ4b0dQ4g0lQ5R1TQ6c3gQ6x4`Q6{4dQ8b6wR9W8cv$yi#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!S%px!h!s%r%s%t&{'Z'[']'a'k*]+^+_,v-Y-Z-b/g0_2P2W2_3yQ+W%nQ+q&QQ+t&RQ,O&YQ.U(fQ0}+{U1R,P,Q,RQ2o.VQ4|1OS5Q1S1TQ7c5R!z;c#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lg;d:W:X:^:`:b:i:k:m:q:s:wW%Oi%Q*k;_S&Q!P&_Q&R!QQ&S!RR+o&O$Z$}i#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lT)q$t)rV*o%U:Z:[U'Q!d%a,|S(t#x#yQ+i%yS.O(b(cQ0t+uQ4O/xR7R4m&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;b$i$_c#W#c%i%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.i.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;UT#RV#S&{kOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ'O!dR1{,yv!mQ!d!q!t!w!x&|'T'U'b'c'd,y-P-R-c0y4t4vS*]${*cS/g*^*eQ/p*fQ0v+wQ3y/oR3|/rlqOXs!Y#b%e&h&j&k&m,a,f1f1iQ&o!]Q'l!vS(h#s9xQ+[%qQ+y&TQ+z&VQ-W'YQ-e'eS.[(m:eS/}*w:nQ0]+]Q0x+xQ1m,hQ1o,iQ1w,tQ2U-XQ2X-]S4T0O:tQ4Y0^S4]0`:uQ5l1yQ5p2VQ5u2^Q6v4ZQ7s5nQ7t5qQ7w5vR8w7p$d$^c#W#c%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;US(e#n'_U*h$|(l3YS+R%i.iQ2k0VQ5}2jQ7}6QR9O8O$d$]c#W#c%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;US(d#n'_S(v#y$^S+Q%i.iS.P(c(eQ.l)WQ0S+RR2h.Q&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bS#o]9qQ&j!WQ&k!XQ&m!ZQ&n![R1e,dQ'V!gQ+T%nQ-U'XS.R(f+WQ2S-TW2l.U.V0U0WQ5o2TU5|2i2k2oS7z5}6PS8|7|7}S9c8{9OQ9k9dR9n9lU!uQ'U-RT4r0y4t!O_OXZ`s!U!Y#b#f%]%e&_&a&h&j&k&m(_,a,f-x1f1i]!oQ!q'U-R0y4tT#o]9q%WzOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xS(t#x#yS.O(b(c!s:{$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bY!sQ'U-R0y4tQ'a!qS'k!t!wS'm!x4vS-b'b'cQ-d'dR2_-cQ'j!sS(Z#e1`S-a'a'mQ/X*QQ/e*]Q2`-dQ3k/YS3t/f/pQ6b3fS6m3z3|Q8Y6cR8a6pQ#ubQ'i!sS(Y#e1`S([#k*vQ*x%^Q+Y%oQ+`%uU-`'a'j'mQ-t(ZQ/W*QQ/d*]Q/j*`Q0[+ZQ1P+}S2]-a-dQ2e-|S3j/X/YS3s/e/pQ3v/iQ3x/kQ5O1QQ5w2`Q6a3fQ6e3kS6i3t3|Q6n3{Q7a5PS8X6b6cQ8]6jQ8_6mQ8n7bQ9S8YQ9T8^Q9V8aQ9_8oQ9g9UQ;O:yQ;Z;SR;[;TV!uQ'U-R%WaOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xS#uy!i!r:x$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bR;O;a%WbOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xQ%^j!S%ox!h!s%r%s%t&{'Z'[']'a'k*]+^+_,v-Y-Z-b/g0_2P2W2_3yS%uy!iQ+Z%pQ+}&YW1Q,O,P,Q,RU5P1R1S1TS7b5Q5RQ8o7c!r:y$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ;S;`R;T;a$zeOPXYstuv!Y!_!f!n#Q#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xY#`WZ#U#X'x!S%bm#f#g#j%]%`(R(](^(_*y*z*|,],s-q-w-x-y-{1n2f2g5j5{Q,[&e!p:z$Z$l)i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bR:}&}S'R!d%aR1},|$|dOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{,^,a,f-V-_-m-s.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2v4q4{5]5^5a5t7Y7_7n7x!r)V$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ,Z&eQ0V+VQ2j.TQ6Q2nR8O6R!f$Tc#W%i'w'}(i(p)P)Q)R)S)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9r!T:P)U)g,w.i1u1x2z3S3T3U3V3Z3a5m6V6[6]7T7r8P8T8U9Y9a;U!b$Vc#W%i'w'}(i(p)R)S)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9r!P:R)U)g,w.i1u1x2z3U3V3Z3a5m6V6[6]7T7r8P8T8U9Y9a;U!^$Zc#W%i'w'}(i(p)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9rQ3e/Sz;b)U)g,w.i1u1x2z3Z3a5m6V6[6]7T7r8P8T8U9Y9a;UQ;g;iR;h;j&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bS$mh$nR3^.o'RgOPWXYZhstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l$n%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.o.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bT$if$oQ$gfS)`$j)dR)l$oT$hf$oT)b$j)d'RhOPWXYZhstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l$n%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.o.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bT$mh$nQ$phR)k$n%WjOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7x!s;`$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;b#alOPXZs!Y!_!n#Q#b#m#z$l%e&a&d&e&h&j&k&m&q&y'W(u)i*{+V,^,a,f-V.T.p/y0|1^1_1a1c1f1i1k2n3]4q4{5]5^5a6R7Y7_7nv$|i#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!z(l#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lQ*s%YQ.{)ug3Y:W:X:^:`:b:i:k:m:q:s:wv$xi#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;hQ*V$yS*`${*cQ*t%ZQ/k*a!z;Q#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lf;R:W:X:^:`:b:i:k:m:q:s:wQ;V;cQ;W;dQ;X;eR;Y;fv$|i#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!z(l#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lg3Y:W:X:^:`:b:i:k:m:q:s:wloOXs!Y#b%e&h&j&k&m,a,f1f1iQ*Y$zQ,o&tQ,p&vR3n/^$Y$}i#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lQ+r&RQ0r+tQ4k0qR7Q4lT*b${*cS*b${*cT4s0y4tS/i*_4qT3{/q7YQ+Y%oQ/j*`Q0[+ZQ1P+}Q5O1QQ7a5PQ8n7bR9_8on)y$u(n*u/[/s/t2s3l4R6`6q9R;P;];^!W:h(j)Z*P*X.Z.w/S/a0T0o0q2r3m3q4j4l6S6T6g6k6s6u8[8`9f;i;j]:i3X6Z8Q9P9Q9op){$u(n*u/Q/[/s/t2s3l4R6`6q9R;P;];^!Y:j(j)Z*P*X.Z.w/S/a0T0o0q2p2r3m3q4j4l6S6T6g6k6s6u8[8`9f;i;j_:k3X6Z8Q8R9P9Q9opnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iQ&[!TR,^&epnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iR&[!TQ+v&SR0n+oqnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iQ0z+{S4y0}1OU7Z4w4x4|S8j7]7^S9Z8i8lQ9h9[R9m9iQ&c!UR,V&_R5V1WS%w{%|R0g+fQ&h!VR,a&iR,g&nT1g,f1iR,k&oQ,j&oR1p,kQ'o!yR-g'oQsOQ#bXT%hs#bQ!|TR'q!|Q#PUR's#PQ)r$tR.x)rQ#SVR'u#SQ#VWU'{#V'|-nQ'|#WR-n'}Q,z'OR1|,zQ._(nR2t._Q.b(pS2w.b2xR2x.cQ-R'UR2Q-RY!qQ'U-R0y4tR'`!qS#]W%`U(S#](T-oQ(T#^R-o(OQ,}'RR2O,}r`OXs!U!Y#b%e&_&a&h&j&k&m,a,f1f1iS#fZ%]U#p`#f-xR-x(_Q(`#hQ-u([W-}(`-u2c5yQ2c-vR5y2dQ)d$jR.q)dQ$nhR)j$nQ$acU)Y$a-j:VQ-j9rR:V)gQ/V*QW3h/V3i6d8ZU3i/W/X/YS6d3j3kR8Z6e#m)w$u(j(n)Z*P*X*p*q*u.X.Y.Z.w/Q/R/S/[/a/s/t0T0o0q2p2q2r2s3X3l3m3q4R4j4l6S6T6X6Y6Z6`6g6k6q6s6u8Q8R8S8[8`9P9Q9R9f9o;P;];^;i;jQ/_*XU3p/_3r6hQ3r/aR6h3qQ*c${R/m*cQ*l%PR/v*lQ4W0TR6t4WQ*}%cR0R*}Q4n0tS7S4n8hR8h7TQ+x&TR0w+xQ4t0yR7W4tQ1V,SS5T1V7eR7e5VQ0b+bW4a0b4c6z8dQ4c0eQ6z4bR8d6{Q+g%wR0h+gQ1i,fR5e1iWrOXs#bQ&l!YQ+P%eQ,`&hQ,b&jQ,c&kQ,e&mQ1d,aS1g,f1iR5d1fQ%gpQ&p!^Q&s!`Q&u!aQ&w!bQ'g!sQ+O%dQ+[%qQ+n%}Q,U&cQ,m&rW-^'a'i'j'mQ-e'eQ/l*bQ0]+]S1Y,V,YQ1q,lQ1r,oQ1s,pQ2X-]W2Z-`-a-d-fQ4Y0^Q4f0kQ4i0oQ4}1PQ5X1[Q5c1eU5r2Y2]2`Q5u2^Q6v4ZQ7O4hQ7P4jQ7V4sQ7`5OQ7f5WS7u5s5wQ7w5vQ8e6|Q8m7aQ8r7gQ8y7vQ9X8fQ9^8nQ9b8zR9j9_Q%qxQ'Y!hQ'e!sU+]%r%s%tQ,t&{U-X'Z'[']S-]'a'kQ/c*]S0^+^+_Q1y,vS2V-Y-ZQ2^-bQ3u/gQ4Z0_Q5n2PQ5q2WQ5v2_R6l3yS$vi;_R*m%QU%Pi%Q;_R/u*kQ$uiS(j#t+XQ(n#vS)Z$b$cQ*P$wQ*X$zQ*p%VQ*q%WQ*u%[Q.X:]Q.Y:_Q.Z:aQ.w)pQ/Q)yQ/R){Q/S)|Q/[*TQ/a*ZQ/s*iQ/t*jh0T+U.S0{2m4z6O7[7{8k8}9]9eQ0o+pQ0q+sQ2p:hQ2q:jQ2r:lQ2s.^S3X:W:XQ3l/]Q3m/^Q3q/`Q4R/{Q4j0pQ4l0sQ6S:pQ6T:rQ6X:^Q6Y:`Q6Z:bQ6`3eQ6g3oQ6k3wQ6q3}Q6s4VQ6u4XQ8Q:mQ8R:iQ8S:kQ8[6fQ8`6oQ9P:qQ9Q:sQ9R8WQ9f:vQ9o:wQ;P;_Q;];gQ;^;hQ;i;kR;j;llpOXs!Y#b%e&h&j&k&m,a,f1f1iQ!ePS#dZ#mQ&r!_U'^!n4q7YQ't#QQ(w#zQ)h$lS,Y&a&dQ,_&eQ,l&qQ,q&yQ-T'WQ.e(uQ.u)iQ0P*{Q0W+VQ1b,^Q2T-VQ2k.TQ3`.pQ4P/yQ4x0|Q5Z1^Q5[1_Q5`1aQ5b1cQ5g1kQ5}2nQ6^3]Q7^4{Q7j5]Q7k5^Q7m5aQ7}6RQ8l7_R8v7n#UcOPXZs!Y!_!n#b#m#z%e&a&d&e&h&j&k&m&q&y'W(u*{+V,^,a,f-V.T/y0|1^1_1a1c1f1i1k2n4q4{5]5^5a6R7Y7_7nQ#WWQ#cYQ%itQ%juS%lv!fS'w#U'zQ'}#XQ(i#sQ(p#wQ(x#}Q(y$OQ(z$PQ({$QQ(|$RQ(}$SQ)O$TQ)P$UQ)Q$VQ)R$WQ)S$XQ)U$ZQ)X$`Q)]$dW)g$l)i.p3]Q+S%kQ+h%xS,w&}1zQ-f'hS-k'x-mQ-p(QQ-r(XQ.](mQ.c(qQ.g9pQ.i9sQ.j9tQ.k9wQ.z)tQ/|*wQ1u,rQ1x,uQ2Y-_Q2a-sQ2u.aQ2z9xQ2{9yQ2|9zQ2}9{Q3O9|Q3P9}Q3Q:OQ3R:PQ3S:QQ3T:RQ3U:SQ3V:TQ3W.hQ3Z:YQ3[:cQ3a:UQ4S0OQ4[0`Q5m:dQ5s2[Q5x2bQ6U2vQ6V:eQ6[:gQ6]:nQ7T4oQ7r5kQ7v5tQ8P:oQ8T:tQ8U:uQ8z7xQ9Y8gQ9a8xQ9r#QR;U;bR#YWR'P!dY!sQ'U-R0y4tS&{!d,yQ'a!qS'k!t!wS'm!x4vS,v&|'TS-b'b'cQ-d'dQ2P-PR2_-cR(o#vR(r#wQ!eQT-Q'U-R]!pQ!q'U-R0y4tQ#n]R'_9qT#iZ%]S#hZ%]S%cm,]U([#f#g#jS-v(](^Q-z(_Q0Q*|Q2d-wU2e-x-y-{S5z2f2gR7y5{`#[W#U#X%`'x(R*y-qr#eZm#f#g#j%](](^(_*|-w-x-y-{2f2g5{Q1`,]Q1v,sQ5i1nQ7q5jT:|&}*zT#_W%`S#^W%`S'y#U(RS(O#X*yS,x&}*zT-l'x-qT'S!d%aQ$jfR)n$oT)c$j)dR3_.oT*S$w*UR*[$zQ0U+UQ2i.SQ4w0{Q6P2mQ7]4zQ7|6OQ8i7[Q8{7{Q9[8kQ9d8}Q9i9]R9l9elqOXs!Y#b%e&h&j&k&m,a,f1f1iQ&b!UR,U&_rmOXs!T!U!Y#b%e&_&h&j&k&m,a,f1f1iR,]&eT%dm,]R0u+uR,T&]Q%{{R+m%|R+c%vT&f!V&iT&g!V&iT1h,f1i",nodeNames:"⚠ ArithOp ArithOp LineComment BlockComment Script ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:366,context:Vi,nodeProps:[["group",-26,6,14,16,62,199,203,207,208,210,213,216,226,228,234,236,238,240,243,249,255,257,259,261,263,265,266,"Statement",-32,10,11,25,28,29,35,45,48,49,51,56,64,72,76,78,80,81,103,104,113,114,131,134,136,137,138,139,141,142,162,163,165,"Expression",-23,24,26,30,34,36,38,166,168,170,171,173,174,175,177,178,179,181,182,183,193,195,197,198,"Type",-3,84,96,102,"ClassItem"],["openedBy",31,"InterpolationStart",50,"[",54,"{",69,"(",143,"JSXStartTag",155,"JSXStartTag JSXStartCloseTag"],["closedBy",33,"InterpolationEnd",44,"]",55,"}",70,")",144,"JSXSelfCloseEndTag JSXEndTag",160,"JSXEndTag"]],propSources:[Wi],skippedNodes:[0,3,4,269],repeatNodeCount:33,tokenData:"$>y(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu>PuvBavwDxwxGgxyMvyz! Qz{!![{|!%O|}!&]}!O!%O!O!P!'g!P!Q!1w!Q!R#0t!R![#3T![!]#@T!]!^#Aa!^!_#Bk!_!`#GS!`!a#In!a!b#N{!b!c$$z!c!}>P!}#O$&U#O#P$'`#P#Q$,w#Q#R$.R#R#S>P#S#T$/`#T#o$0j#o#p$4z#p#q$5p#q#r$7Q#r#s$8^#s$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$I|>P$I|$I}$P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(n%d_$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$d&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$d&j'{!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU'{!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$d&j'xpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU'xpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX'xp'{!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z(CS+rq$d&j'xp'{!b'n(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z(CS.ST'y#S$d&j'o(;dO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c(CS.n_$d&j'xp'{!b'o(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`/x`$d&j!l$Ip'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S1V`#q$Id$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S2d_#q$Id$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$2b3l_'w$(n$d&j'{!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k*r4r_$d&j'{!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k)`5vX$d&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q)`6jT$_#t$d&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#t6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y#t7bO$_#t#t7eP;=`<%l6y)`7kP;=`<%l5q*r7w]$_#t$d&j'{!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}%W8uZ'{!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p%W9oU$_#t'{!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}%W:UP;=`<%l8p*r:[P;=`<%l4k#%|:hg$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}st%Ztu`k$d&j'xp'{!b(V!LY'u&;d$W#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P+d@`k$d&j'xp'{!b$W#tOY%ZYZ&cZr%Zrs&}st%Ztu@Tuw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![@T![!^%Z!^!_*g!_!c%Z!c!}@T!}#O%Z#O#P&c#P#R%Z#R#S@T#S#T%Z#T#o@T#o#p*g#p$g%Z$g;'S@T;'S;=`BT<%lO@T+dBWP;=`<%l@T(CSB^P;=`<%l>P%#SBl`$d&j'xp'{!b#i$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Cn!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#SCy_$d&j#{$Id'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%DfETa(k%Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$/l#>fi$d&j'xp'{!bl$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#>Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#b%Z#b#c#5T#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%Gh#@b_!a$b$d&j#y%Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$JT>P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(CS$=Uk$d&j'xp'{!b'o(;d(V!LY'u&;d$W#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P",tokenizers:[_i,Ci,2,3,4,5,6,7,8,9,10,11,12,13,Ri,new te("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOq~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!O~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(U~~",141,327),new te("j~RQYZXz{^~^O'r~~aP!P!Qd~iO's~~",25,309)],topRules:{Script:[0,5],SingleExpression:[1,267],SingleClassItem:[2,268]},dialects:{jsx:12810,ts:12812},dynamicPrecedences:{76:1,78:1,163:1,191:1},specialized:[{term:313,get:O=>qi[O]||-1},{term:329,get:O=>ji[O]||-1},{term:67,get:O=>zi[O]||-1}],tokenPrec:12836}),Ii=[P("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),P("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),P("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),P("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),P("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),P(`try { +import{S as $t,i as gt,s as mt,e as Xt,f as Pt,U as D,g as Zt,y as je,o as bt,I as xt,J as kt,K as wt,H as yt,C as Yt,L as Tt}from"./index-058d72e8.js";import{P as Ut,N as vt,u as Vt,D as Rt,v as Ye,T as M,I as Te,w as oe,x as n,y as _t,L as ce,z as Qe,A,B as ue,F as kO,G as fe,H as q,J as wO,K as yO,M as YO,E as U,O as E,Q as Ct,R as Wt,U as TO,V as P,W as qt,X as jt,a as j,h as zt,b as Gt,c as It,d as At,e as Et,s as Nt,t as Bt,f as Dt,g as Jt,r as Lt,i as Mt,k as Ft,j as Kt,l as Ht,m as ea,n as Oa,o as ta,p as aa,q as ze,C as J}from"./index-fd4289fb.js";class ee{constructor(e,a,t,i,s,r,l,o,Q,u=0,c){this.p=e,this.stack=a,this.state=t,this.reducePos=i,this.pos=s,this.score=r,this.buffer=l,this.bufferBase=o,this.curContext=Q,this.lookAhead=u,this.parent=c}toString(){return`[${this.stack.filter((e,a)=>a%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,a,t=0){let i=e.parser.context;return new ee(e,[],a,t,t,0,[],0,i?new Ge(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,a){this.stack.push(this.state,a,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var a;let t=e>>19,i=e&65535,{parser:s}=this.p,r=s.dynamicPrecedence(i);if(r&&(this.score+=r),t==0){this.pushState(s.getGoto(this.state,i,!0),this.reducePos),i=2e3&&!(!((a=this.p.parser.nodeSet.types[i])===null||a===void 0)&&a.isAnonymous)&&(o==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=Q):this.p.lastBigReductionSizel;)this.stack.pop();this.reduceContext(i,o)}storeNode(e,a,t,i=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&r.buffer[l-4]==0&&r.buffer[l-1]>-1){if(a==t)return;if(r.buffer[l-2]>=a){r.buffer[l-2]=t;return}}}if(!s||this.pos==t)this.buffer.push(e,a,t,i);else{let r=this.buffer.length;if(r>0&&this.buffer[r-4]!=0)for(;r>0&&this.buffer[r-2]>t;)this.buffer[r]=this.buffer[r-4],this.buffer[r+1]=this.buffer[r-3],this.buffer[r+2]=this.buffer[r-2],this.buffer[r+3]=this.buffer[r-1],r-=4,i>4&&(i-=4);this.buffer[r]=e,this.buffer[r+1]=a,this.buffer[r+2]=t,this.buffer[r+3]=i}}shift(e,a,t){let i=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=t,this.shiftContext(a,i),a<=this.p.parser.maxNode&&this.buffer.push(a,i,t,4);else{let s=e,{parser:r}=this.p;(t>this.pos||a<=r.maxNode)&&(this.pos=t,r.stateFlag(s,1)||(this.reducePos=t)),this.pushState(s,i),this.shiftContext(a,i),a<=r.maxNode&&this.buffer.push(a,i,t,4)}}apply(e,a,t){e&65536?this.reduce(e):this.shift(e,a,t)}useNode(e,a){let t=this.p.reused.length-1;(t<0||this.p.reused[t]!=e)&&(this.p.reused.push(e),t++);let i=this.pos;this.reducePos=this.pos=i+e.length,this.pushState(a,i),this.buffer.push(t,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,a=e.buffer.length;for(;a>0&&e.buffer[a-2]>e.reducePos;)a-=4;let t=e.buffer.slice(a),i=e.bufferBase+a;for(;e&&i==e.bufferBase;)e=e.parent;return new ee(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,t,i,this.curContext,this.lookAhead,e)}recoverByDelete(e,a){let t=e<=this.p.parser.maxNode;t&&this.storeNode(e,this.pos,a,4),this.storeNode(0,this.pos,a,t?8:4),this.pos=this.reducePos=a,this.score-=190}canShift(e){for(let a=new ia(this);;){let t=this.p.parser.stateSlot(a.state,4)||this.p.parser.hasAction(a.state,e);if(t==0)return!1;if(!(t&65536))return!0;a.reduce(t)}}recoverByInsert(e){if(this.stack.length>=300)return[];let a=this.p.parser.nextStates(this.state);if(a.length>8||this.stack.length>=120){let i=[];for(let s=0,r;so&1&&l==r)||i.push(a[s],r)}a=i}let t=[];for(let i=0;i>19,i=a&65535,s=this.stack.length-t*3;if(s<0||e.getGoto(this.stack[s],i,!1)<0){let r=this.findForcedReduction();if(r==null)return!1;a=r}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(a),!0}findForcedReduction(){let{parser:e}=this.p,a=[],t=(i,s)=>{if(!a.includes(i))return a.push(i),e.allActions(i,r=>{if(!(r&393216))if(r&65536){let l=(r>>19)-s;if(l>1){let o=r&65535,Q=this.stack.length-l*3;if(Q>=0&&e.getGoto(this.stack[Q],o,!1)>=0)return l<<19|65536|o}}else{let l=t(r,s+1);if(l!=null)return l}})};return t(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let a=0;athis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Ge{constructor(e,a){this.tracker=e,this.context=a,this.hash=e.strict?e.hash(a):0}}var Ie;(function(O){O[O.Insert=200]="Insert",O[O.Delete=190]="Delete",O[O.Reduce=100]="Reduce",O[O.MaxNext=4]="MaxNext",O[O.MaxInsertStackDepth=300]="MaxInsertStackDepth",O[O.DampenInsertStackDepth=120]="DampenInsertStackDepth",O[O.MinBigReduction=2e3]="MinBigReduction"})(Ie||(Ie={}));class ia{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let a=e&65535,t=e>>19;t==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(t-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],a,!0);this.state=i}}class Oe{constructor(e,a,t){this.stack=e,this.pos=a,this.index=t,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,a=e.bufferBase+e.buffer.length){return new Oe(e,a,a-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Oe(this.stack,this.pos,this.index)}}function I(O,e=Uint16Array){if(typeof O!="string")return O;let a=null;for(let t=0,i=0;t=92&&r--,r>=34&&r--;let o=r-32;if(o>=46&&(o-=46,l=!0),s+=o,l)break;s*=46}a?a[i++]=s:a=new e(s)}return a}class F{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const Ae=new F;class ra{constructor(e,a){this.input=e,this.ranges=a,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=Ae,this.rangeIndex=0,this.pos=this.chunkPos=a[0].from,this.range=a[0],this.end=a[a.length-1].to,this.readNext()}resolveOffset(e,a){let t=this.range,i=this.rangeIndex,s=this.pos+e;for(;st.to:s>=t.to;){if(i==this.ranges.length-1)return null;let r=this.ranges[++i];s+=r.from-t.to,t=r}return s}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,a.from);return this.end}peek(e){let a=this.chunkOff+e,t,i;if(a>=0&&a=this.chunk2Pos&&tl.to&&(this.chunk2=this.chunk2.slice(0,l.to-t)),i=this.chunk2.charCodeAt(0)}}return t>=this.token.lookAhead&&(this.token.lookAhead=t+1),i}acceptToken(e,a=0){let t=a?this.resolveOffset(a,-1):this.pos;if(t==null||t=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,a){if(a?(this.token=a,a.start=e,a.lookAhead=e+1,a.value=a.extended=-1):this.token=Ae,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&a<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,a-this.chunkPos);if(e>=this.chunk2Pos&&a<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,a-this.chunk2Pos);if(e>=this.range.from&&a<=this.range.to)return this.input.read(e,a);let t="";for(let i of this.ranges){if(i.from>=a)break;i.to>e&&(t+=this.input.read(Math.max(i.from,e),Math.min(i.to,a)))}return t}}class _{constructor(e,a){this.data=e,this.id=a}token(e,a){let{parser:t}=a.p;UO(this.data,e,a,this.id,t.data,t.tokenPrecTable)}}_.prototype.contextual=_.prototype.fallback=_.prototype.extend=!1;class te{constructor(e,a,t){this.precTable=a,this.elseToken=t,this.data=typeof e=="string"?I(e):e}token(e,a){let t=e.pos,i=0;for(;;){let s=e.next<0,r=e.resolveOffset(1,1);if(UO(this.data,e,a,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||i++,r==null)break;e.reset(r,e.token)}i&&(e.reset(t,e.token),e.acceptToken(this.elseToken,i))}}te.prototype.contextual=_.prototype.fallback=_.prototype.extend=!1;class b{constructor(e,a={}){this.token=e,this.contextual=!!a.contextual,this.fallback=!!a.fallback,this.extend=!!a.extend}}function UO(O,e,a,t,i,s){let r=0,l=1<0){let p=O[f];if(o.allows(p)&&(e.token.value==-1||e.token.value==p||sa(p,e.token.value,i,s))){e.acceptToken(p);break}}let u=e.next,c=0,h=O[r+2];if(e.next<0&&h>c&&O[Q+h*3-3]==65535&&O[Q+h*3-3]==65535){r=O[Q+h*3-1];continue e}for(;c>1,p=Q+f+(f<<1),g=O[p],$=O[p+1]||65536;if(u=$)c=f+1;else{r=O[p+2],e.advance();continue e}}break}}function Ee(O,e,a){for(let t=e,i;(i=O[t])!=65535;t++)if(i==a)return t-e;return-1}function sa(O,e,a,t){let i=Ee(a,t,e);return i<0||Ee(a,t,O)e)&&!t.type.isError)return a<0?Math.max(0,Math.min(t.to-1,e-25)):Math.min(O.length,Math.max(t.from+1,e+25));if(a<0?t.prevSibling():t.nextSibling())break;if(!t.parent())return a<0?0:O.length}}class la{constructor(e,a){this.fragments=e,this.nodeSet=a,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Be(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Be(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=r,null;if(s instanceof M){if(r==e){if(r=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(r),this.index.push(0))}else this.index[a]++,this.nextStart=r+s.length}}}class na{constructor(e,a){this.stream=a,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(t=>new F)}getActions(e){let a=0,t=null,{parser:i}=e.p,{tokenizers:s}=i,r=i.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,o=0;for(let Q=0;Qc.end+25&&(o=Math.max(c.lookAhead,o)),c.value!=0)){let h=a;if(c.extended>-1&&(a=this.addActions(e,c.extended,c.end,a)),a=this.addActions(e,c.value,c.end,a),!u.extend&&(t=c,a>h))break}}for(;this.actions.length>a;)this.actions.pop();return o&&e.setLookAhead(o),!t&&e.pos==this.stream.end&&(t=new F,t.value=e.p.parser.eofTerm,t.start=t.end=e.pos,a=this.addActions(e,t.value,t.end,a)),this.mainToken=t,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let a=new F,{pos:t,p:i}=e;return a.start=t,a.end=Math.min(t+1,i.stream.end),a.value=t==i.stream.end?i.parser.eofTerm:0,a}updateCachedToken(e,a,t){let i=this.stream.clipPos(t.pos);if(a.token(this.stream.reset(i,e),t),e.value>-1){let{parser:s}=t.p;for(let r=0;r=0&&t.p.parser.dialect.allows(l>>1)){l&1?e.extended=l>>1:e.value=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(i+1)}putAction(e,a,t,i){for(let s=0;se.bufferLength*4?new la(t,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,a=this.minStackPos,t=this.stacks=[],i,s;if(this.bigReductionCount>300&&e.length==1){let[r]=e;for(;r.forceReduce()&&r.stack.length&&r.stack[r.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let r=0;ra)t.push(l);else{if(this.advanceStack(l,t,e))continue;{i||(i=[],s=[]),i.push(l);let o=this.tokens.getMainToken(l);s.push(o.value,o.end)}}break}}if(!t.length){let r=i&&Qa(i);if(r)return this.stackToTree(r);if(this.parser.strict)throw Z&&i&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+a);this.recovering||(this.recovering=5)}if(this.recovering&&i){let r=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,s,t);if(r)return this.stackToTree(r.forceAll())}if(this.recovering){let r=this.recovering==1?1:this.recovering*3;if(t.length>r)for(t.sort((l,o)=>o.score-l.score);t.length>r;)t.pop();t.some(l=>l.reducePos>a)&&this.recovering--}else if(t.length>1){e:for(let r=0;r500&&Q.buffer.length>500)if((l.score-Q.score||l.buffer.length-Q.buffer.length)>0)t.splice(o--,1);else{t.splice(r--,1);continue e}}}t.length>12&&t.splice(12,t.length-12)}this.minStackPos=t[0].pos;for(let r=1;r ":"";if(this.stoppedAt!=null&&i>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let Q=e.curContext&&e.curContext.tracker.strict,u=Q?e.curContext.hash:0;for(let c=this.fragments.nodeAt(i);c;){let h=this.parser.nodeSet.types[c.type.id]==c.type?s.getGoto(e.state,c.type.id):-1;if(h>-1&&c.length&&(!Q||(c.prop(Ye.contextHash)||0)==u))return e.useNode(c,h),Z&&console.log(r+this.stackID(e)+` (via reuse of ${s.getName(c.type.id)})`),!0;if(!(c instanceof M)||c.children.length==0||c.positions[0]>0)break;let f=c.children[0];if(f instanceof M&&c.positions[0]==0)c=f;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),Z&&console.log(r+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let o=this.tokens.getActions(e);for(let Q=0;Qi?a.push(p):t.push(p)}return!1}advanceFully(e,a){let t=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>t)return Je(e,a),!0}}runRecovery(e,a,t){let i=null,s=!1;for(let r=0;r ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),Z&&console.log(u+this.stackID(l)+" (restarted)"),this.advanceFully(l,t))))continue;let c=l.split(),h=u;for(let f=0;c.forceReduce()&&f<10&&(Z&&console.log(h+this.stackID(c)+" (via force-reduce)"),!this.advanceFully(c,t));f++)Z&&(h=this.stackID(c)+" -> ");for(let f of l.recoverByInsert(o))Z&&console.log(u+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,t);this.stream.end>l.pos?(Q==l.pos&&(Q++,o=0),l.recoverByDelete(o,Q),Z&&console.log(u+this.stackID(l)+` (via recover-delete ${this.parser.getName(o)})`),Je(l,t)):(!i||i.scoreO;class vO{constructor(e){this.start=e.start,this.shift=e.shift||de,this.reduce=e.reduce||de,this.reuse=e.reuse||de,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class v extends Ut{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let a=e.nodeNames.split(" ");this.minRepeatTerm=a.length;for(let l=0;le.topRules[l][1]),i=[];for(let l=0;l=0)s(u,o,l[Q++]);else{let c=l[Q+-u];for(let h=-u;h>0;h--)s(l[Q++],o,c);Q++}}}this.nodeSet=new vt(a.map((l,o)=>Vt.define({name:o>=this.minRepeatTerm?void 0:l,id:o,props:i[o],top:t.indexOf(o)>-1,error:o==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(o)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Rt;let r=I(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new _(r,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,a,t){let i=new oa(this,e,a,t);for(let s of this.wrappers)i=s(i,e,a,t);return i}getGoto(e,a,t=!1){let i=this.goto;if(a>=i[0])return-1;for(let s=i[a+1];;){let r=i[s++],l=r&1,o=i[s++];if(l&&t)return o;for(let Q=s+(r>>1);s0}validAction(e,a){return!!this.allActions(e,t=>t==a?!0:null)}allActions(e,a){let t=this.stateSlot(e,4),i=t?a(t):void 0;for(let s=this.stateSlot(e,1);i==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=k(this.data,s+2);else break;i=a(k(this.data,s+1))}return i}nextStates(e){let a=[];for(let t=this.stateSlot(e,1);;t+=3){if(this.data[t]==65535)if(this.data[t+1]==1)t=k(this.data,t+2);else break;if(!(this.data[t+2]&1)){let i=this.data[t+1];a.some((s,r)=>r&1&&s==i)||a.push(this.data[t],i)}}return a}configure(e){let a=Object.assign(Object.create(v.prototype),this);if(e.props&&(a.nodeSet=this.nodeSet.extend(...e.props)),e.top){let t=this.topRules[e.top];if(!t)throw new RangeError(`Invalid top rule name ${e.top}`);a.top=t}return e.tokenizers&&(a.tokenizers=this.tokenizers.map(t=>{let i=e.tokenizers.find(s=>s.from==t);return i?i.to:t})),e.specializers&&(a.specializers=this.specializers.slice(),a.specializerSpecs=this.specializerSpecs.map((t,i)=>{let s=e.specializers.find(l=>l.from==t.external);if(!s)return t;let r=Object.assign(Object.assign({},t),{external:s.to});return a.specializers[i]=Le(r),r})),e.contextTracker&&(a.context=e.contextTracker),e.dialect&&(a.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(a.strict=e.strict),e.wrap&&(a.wrappers=a.wrappers.concat(e.wrap)),e.bufferLength!=null&&(a.bufferLength=e.bufferLength),a}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let a=this.dynamicPrecedences;return a==null?0:a[e]||0}parseDialect(e){let a=Object.keys(this.dialects),t=a.map(()=>!1);if(e)for(let s of e.split(" ")){let r=a.indexOf(s);r>=0&&(t[r]=!0)}let i=null;for(let s=0;st)&&a.p.parser.stateFlag(a.state,2)&&(!e||e.scoreO.external(a,t)<<1|e}return O.get}const ua=54,fa=1,ha=55,da=2,pa=56,Sa=3,Me=4,$a=5,ae=6,VO=7,RO=8,_O=9,CO=10,ga=11,ma=12,Xa=13,pe=57,Pa=14,Fe=58,WO=20,Za=22,qO=23,ba=24,be=26,jO=27,xa=28,ka=31,wa=34,ya=36,Ya=37,Ta=0,Ua=1,va={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},Va={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},Ke={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function Ra(O){return O==45||O==46||O==58||O>=65&&O<=90||O==95||O>=97&&O<=122||O>=161}function zO(O){return O==9||O==10||O==13||O==32}let He=null,eO=null,OO=0;function xe(O,e){let a=O.pos+e;if(OO==a&&eO==O)return He;let t=O.peek(e);for(;zO(t);)t=O.peek(++e);let i="";for(;Ra(t);)i+=String.fromCharCode(t),t=O.peek(++e);return eO=O,OO=a,He=i?i.toLowerCase():t==_a||t==Ca?void 0:null}const GO=60,ie=62,Ue=47,_a=63,Ca=33,Wa=45;function tO(O,e){this.name=O,this.parent=e,this.hash=e?e.hash:0;for(let a=0;a-1?new tO(xe(t,1)||"",O):O},reduce(O,e){return e==WO&&O?O.parent:O},reuse(O,e,a,t){let i=e.type.id;return i==ae||i==ya?new tO(xe(t,1)||"",O):O},hash(O){return O?O.hash:0},strict:!1}),za=new b((O,e)=>{if(O.next!=GO){O.next<0&&e.context&&O.acceptToken(pe);return}O.advance();let a=O.next==Ue;a&&O.advance();let t=xe(O,0);if(t===void 0)return;if(!t)return O.acceptToken(a?Pa:ae);let i=e.context?e.context.name:null;if(a){if(t==i)return O.acceptToken(ga);if(i&&Va[i])return O.acceptToken(pe,-2);if(e.dialectEnabled(Ta))return O.acceptToken(ma);for(let s=e.context;s;s=s.parent)if(s.name==t)return;O.acceptToken(Xa)}else{if(t=="script")return O.acceptToken(VO);if(t=="style")return O.acceptToken(RO);if(t=="textarea")return O.acceptToken(_O);if(va.hasOwnProperty(t))return O.acceptToken(CO);i&&Ke[i]&&Ke[i][t]?O.acceptToken(pe,-1):O.acceptToken(ae)}},{contextual:!0}),Ga=new b(O=>{for(let e=0,a=0;;a++){if(O.next<0){a&&O.acceptToken(Fe);break}if(O.next==Wa)e++;else if(O.next==ie&&e>=2){a>3&&O.acceptToken(Fe,-2);break}else e=0;O.advance()}});function Ia(O){for(;O;O=O.parent)if(O.name=="svg"||O.name=="math")return!0;return!1}const Aa=new b((O,e)=>{if(O.next==Ue&&O.peek(1)==ie){let a=e.dialectEnabled(Ua)||Ia(e.context);O.acceptToken(a?$a:Me,2)}else O.next==ie&&O.acceptToken(Me,1)});function ve(O,e,a){let t=2+O.length;return new b(i=>{for(let s=0,r=0,l=0;;l++){if(i.next<0){l&&i.acceptToken(e);break}if(s==0&&i.next==GO||s==1&&i.next==Ue||s>=2&&sr?i.acceptToken(e,-r):i.acceptToken(a,-(r-2));break}else if((i.next==10||i.next==13)&&l){i.acceptToken(e,1);break}else s=r=0;i.advance()}})}const Ea=ve("script",ua,fa),Na=ve("style",ha,da),Ba=ve("textarea",pa,Sa),Da=oe({"Text RawText":n.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":n.angleBracket,TagName:n.tagName,"MismatchedCloseTag/TagName":[n.tagName,n.invalid],AttributeName:n.attributeName,"AttributeValue UnquotedAttributeValue":n.attributeValue,Is:n.definitionOperator,"EntityReference CharacterReference":n.character,Comment:n.blockComment,ProcessingInst:n.processingInstruction,DoctypeDecl:n.documentMeta}),Ja=v.deserialize({version:14,states:",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z",stateData:"+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~",goto:"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:67,context:ja,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,21,30,33,36,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,29,32,35,37,"OpenTag"],["group",-9,14,17,18,19,20,39,40,41,42,"Entity",16,"Entity TextContent",-3,28,31,34,"TextContent Entity"]],propSources:[Da],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zbkWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOa!R!R7tP;=`<%l7S!Z8OYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{ihSkWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbhSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXhSa!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TakWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOb!R!RAwP;=`<%lAY!ZBRYkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbhSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbhSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXhSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYlhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_khS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_X`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!a`!cpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!a`!cp!dPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!a`!cpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!a`!cpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!a`!cpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!a`!cpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!a`!cpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!a`!cpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!a`!cpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!cpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO{PP!-nP;=`<%l!-Sq!-xS!cp{POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!a`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!a`{POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!a`!cpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!a`!cpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!a`!cpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!a`!cpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!a`!cpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!a`!cpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!cpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOxPP!7TP;=`<%l!6Vq!7]V!cpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!a`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!a`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let Q=l.type.id;if(Q==xa)return Se(l,o,a);if(Q==ka)return Se(l,o,t);if(Q==wa)return Se(l,o,i);if(Q==WO&&s.length){let u=l.node,c=u.firstChild,h=c&&aO(c,o),f;if(h){for(let p of s)if(p.tag==h&&(!p.attrs||p.attrs(f||(f=IO(u,o))))){let g=u.lastChild;return{parser:p.parser,overlay:[{from:c.to,to:g.type.id==Ya?g.from:u.to}]}}}}if(r&&Q==qO){let u=l.node,c;if(c=u.firstChild){let h=r[o.read(c.from,c.to)];if(h)for(let f of h){if(f.tagName&&f.tagName!=aO(u.parent,o))continue;let p=u.lastChild;if(p.type.id==be){let g=p.from+1,$=p.lastChild,x=p.to-($&&$.isError?0:1);if(x>g)return{parser:f.parser,overlay:[{from:g,to:x}]}}else if(p.type.id==jO)return{parser:f.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}const La=96,iO=1,Ma=97,Fa=98,rO=2,EO=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Ka=58,Ha=40,NO=95,ei=91,K=45,Oi=46,ti=35,ai=37;function re(O){return O>=65&&O<=90||O>=97&&O<=122||O>=161}function ii(O){return O>=48&&O<=57}const ri=new b((O,e)=>{for(let a=!1,t=0,i=0;;i++){let{next:s}=O;if(re(s)||s==K||s==NO||a&&ii(s))!a&&(s!=K||i>0)&&(a=!0),t===i&&s==K&&t++,O.advance();else{a&&O.acceptToken(s==Ha?Ma:t==2&&e.canShift(rO)?rO:Fa);break}}}),si=new b(O=>{if(EO.includes(O.peek(-1))){let{next:e}=O;(re(e)||e==NO||e==ti||e==Oi||e==ei||e==Ka||e==K)&&O.acceptToken(La)}}),li=new b(O=>{if(!EO.includes(O.peek(-1))){let{next:e}=O;if(e==ai&&(O.advance(),O.acceptToken(iO)),re(e)){do O.advance();while(re(O.next));O.acceptToken(iO)}}}),ni=oe({"AtKeyword import charset namespace keyframes media supports":n.definitionKeyword,"from to selector":n.keyword,NamespaceName:n.namespace,KeyframeName:n.labelName,KeyframeRangeName:n.operatorKeyword,TagName:n.tagName,ClassName:n.className,PseudoClassName:n.constant(n.className),IdName:n.labelName,"FeatureName PropertyName":n.propertyName,AttributeName:n.attributeName,NumberLiteral:n.number,KeywordQuery:n.keyword,UnaryQueryOp:n.operatorKeyword,"CallTag ValueName":n.atom,VariableName:n.variableName,Callee:n.operatorKeyword,Unit:n.unit,"UniversalSelector NestingSelector":n.definitionOperator,MatchOp:n.compareOperator,"ChildOp SiblingOp, LogicOp":n.logicOperator,BinOp:n.arithmeticOperator,Important:n.modifier,Comment:n.blockComment,ColorLiteral:n.color,"ParenthesizedContent StringLiteral":n.string,":":n.punctuation,"PseudoOp #":n.derefOperator,"; ,":n.separator,"( )":n.paren,"[ ]":n.squareBracket,"{ }":n.brace}),oi={__proto__:null,lang:32,"nth-child":32,"nth-last-child":32,"nth-of-type":32,"nth-last-of-type":32,dir:32,"host-context":32,url:60,"url-prefix":60,domain:60,regexp:60,selector:134},ci={__proto__:null,"@import":114,"@media":138,"@charset":142,"@namespace":146,"@keyframes":152,"@supports":164},Qi={__proto__:null,not:128,only:128},ui=v.deserialize({version:14,states:"9bQYQ[OOO#_Q[OOP#fOWOOOOQP'#Cd'#CdOOQP'#Cc'#CcO#kQ[O'#CfO$_QXO'#CaO$fQ[O'#ChO$qQ[O'#DPO$vQ[O'#DTOOQP'#Ej'#EjO${QdO'#DeO%gQ[O'#DrO${QdO'#DtO%xQ[O'#DvO&TQ[O'#DyO&]Q[O'#EPO&kQ[O'#EROOQS'#Ei'#EiOOQS'#EU'#EUQYQ[OOO&rQXO'#CdO'gQWO'#DaO'lQWO'#EpO'wQ[O'#EpQOQWOOP(RO#tO'#C_POOO)C@X)C@XOOQP'#Cg'#CgOOQP,59Q,59QO#kQ[O,59QO(^Q[O'#EXO(xQWO,58{O)QQ[O,59SO$qQ[O,59kO$vQ[O,59oO(^Q[O,59sO(^Q[O,59uO(^Q[O,59vO)]Q[O'#D`OOQS,58{,58{OOQP'#Ck'#CkOOQO'#C}'#C}OOQP,59S,59SO)dQWO,59SO)iQWO,59SOOQP'#DR'#DROOQP,59k,59kOOQO'#DV'#DVO)nQ`O,59oOOQS'#Cp'#CpO${QdO'#CqO)vQvO'#CsO+TQtO,5:POOQO'#Cx'#CxO)iQWO'#CwO+iQWO'#CyOOQS'#Em'#EmOOQO'#Dh'#DhO+nQ[O'#DoO+|QWO'#EqO&]Q[O'#DmO,[QWO'#DpOOQO'#Er'#ErO({QWO,5:^O,aQpO,5:`OOQS'#Dx'#DxO,iQWO,5:bO,nQ[O,5:bOOQO'#D{'#D{O,vQWO,5:eO,{QWO,5:kO-TQWO,5:mOOQS-E8S-E8SO${QdO,59{O-]Q[O'#EZO-jQWO,5;[O-jQWO,5;[POOO'#ET'#ETP-uO#tO,58yPOOO,58y,58yOOQP1G.l1G.lO.lQXO,5:sOOQO-E8V-E8VOOQS1G.g1G.gOOQP1G.n1G.nO)dQWO1G.nO)iQWO1G.nOOQP1G/V1G/VO.yQ`O1G/ZO/dQXO1G/_O/zQXO1G/aO0bQXO1G/bO0xQWO,59zO0}Q[O'#DOO1UQdO'#CoOOQP1G/Z1G/ZO${QdO1G/ZO1]QpO,59]OOQS,59_,59_O${QdO,59aO1eQWO1G/kOOQS,59c,59cO1jQ!bO,59eO1rQWO'#DhO1}QWO,5:TO2SQWO,5:ZO&]Q[O,5:VO&]Q[O'#E[O2[QWO,5;]O2gQWO,5:XO(^Q[O,5:[OOQS1G/x1G/xOOQS1G/z1G/zOOQS1G/|1G/|O2xQWO1G/|O2}QdO'#D|OOQS1G0P1G0POOQS1G0V1G0VOOQS1G0X1G0XO3YQtO1G/gOOQO,5:u,5:uO3pQ[O,5:uOOQO-E8X-E8XO3}QWO1G0vPOOO-E8R-E8RPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$u7+$uO${QdO7+$uOOQS1G/f1G/fO4YQXO'#EoO4aQWO,59jO4fQtO'#EVO5ZQdO'#ElO5eQWO,59ZO5jQpO7+$uOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%V7+%VO5rQWO1G/PO${QdO1G/oOOQO1G/u1G/uOOQO1G/q1G/qO5wQWO,5:vOOQO-E8Y-E8YO6VQXO1G/vOOQS7+%h7+%hO6^QYO'#CsOOQO'#EO'#EOO6iQ`O'#D}OOQO'#D}'#D}O6tQWO'#E]O6|QdO,5:hOOQS,5:h,5:hO7XQtO'#EYO${QdO'#EYO8VQdO7+%ROOQO7+%R7+%ROOQO1G0a1G0aO8jQpO<T![;'S%^;'S;=`%o<%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^l;nYo`#b[Oy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^l[[o`#b[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^n?VSp^Oy%^z;'S%^;'S;=`%o<%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^n@VU#_QOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o<%lO%^~AUSo`#X~Oy%^z;'S%^;'S;=`%o<%lO%^lAg[#b[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o<%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o<%lO%^nC^S!W^Oy%^z;'S%^;'S;=`%o<%lO%^dCoSzSOy%^z;'S%^;'S;=`%o<%lO%^bDQU|QOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o<%lO%^bDkS|Qo`Oy%^z;'S%^;'S;=`%o<%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bEk[!YQo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bFfSxQOy%^z;'S%^;'S;=`%o<%lO%^lFwSv[Oy%^z;'S%^;'S;=`%o<%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o<%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o<%lO%^bHYS!`Qo`Oy%^z;'S%^;'S;=`%o<%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o<%lO%^fIQS!RUOy%^z;'S%^;'S;=`%o<%lO%^nIcS!Q^Oy%^z;'S%^;'S;=`%o<%lO%^fItU!PQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^`JZP;=`<%l$}",tokenizers:[si,li,ri,1,2,3,4,new te("m~RRYZ[z{a~~g~aO#Z~~dP!P!Qg~lO#[~~",28,102)],topRules:{StyleSheet:[0,4],Styles:[1,84]},specialized:[{term:97,get:O=>oi[O]||-1},{term:56,get:O=>ci[O]||-1},{term:98,get:O=>Qi[O]||-1}],tokenPrec:1169});let $e=null;function ge(){if(!$e&&typeof document=="object"&&document.body){let{style:O}=document.body,e=[],a=new Set;for(let t in O)t!="cssText"&&t!="cssFloat"&&typeof O[t]=="string"&&(/[A-Z]/.test(t)&&(t=t.replace(/[A-Z]/g,i=>"-"+i.toLowerCase())),a.has(t)||(e.push(t),a.add(t)));$e=e.sort().map(t=>({type:"property",label:t}))}return $e||[]}const sO=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(O=>({type:"class",label:O})),lO=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(O=>({type:"keyword",label:O})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(O=>({type:"constant",label:O}))),fi=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(O=>({type:"type",label:O})),Y=/^(\w[\w-]*|-\w[\w-]*|)$/,hi=/^-(-[\w-]*)?$/;function di(O,e){var a;if((O.name=="("||O.type.isError)&&(O=O.parent||O),O.name!="ArgList")return!1;let t=(a=O.parent)===null||a===void 0?void 0:a.firstChild;return(t==null?void 0:t.name)!="Callee"?!1:e.sliceString(t.from,t.to)=="var"}const nO=new wO,pi=["Declaration"];function Si(O){for(let e=O;;){if(e.type.isTop)return e;if(!(e=e.parent))return O}}function BO(O,e,a){if(e.to-e.from>4096){let t=nO.get(e);if(t)return t;let i=[],s=new Set,r=e.cursor(Te.IncludeAnonymous);if(r.firstChild())do for(let l of BO(O,r.node,a))s.has(l.label)||(s.add(l.label),i.push(l));while(r.nextSibling());return nO.set(e,i),i}else{let t=[],i=new Set;return e.cursor().iterate(s=>{var r;if(a(s)&&s.matchContext(pi)&&((r=s.node.nextSibling)===null||r===void 0?void 0:r.name)==":"){let l=O.sliceString(s.from,s.to);i.has(l)||(i.add(l),t.push({label:l,type:"variable"}))}}),t}}const $i=O=>e=>{let{state:a,pos:t}=e,i=q(a).resolveInner(t,-1),s=i.type.isError&&i.from==i.to-1&&a.doc.sliceString(i.from,i.to)=="-";if(i.name=="PropertyName"||(s||i.name=="TagName")&&/^(Block|Styles)$/.test(i.resolve(i.to).name))return{from:i.from,options:ge(),validFor:Y};if(i.name=="ValueName")return{from:i.from,options:lO,validFor:Y};if(i.name=="PseudoClassName")return{from:i.from,options:sO,validFor:Y};if(O(i)||(e.explicit||s)&&di(i,a.doc))return{from:O(i)||s?i.from:t,options:BO(a.doc,Si(i),O),validFor:hi};if(i.name=="TagName"){for(let{parent:o}=i;o;o=o.parent)if(o.name=="Block")return{from:i.from,options:ge(),validFor:Y};return{from:i.from,options:fi,validFor:Y}}if(!e.explicit)return null;let r=i.resolve(t),l=r.childBefore(t);return l&&l.name==":"&&r.name=="PseudoClassSelector"?{from:t,options:sO,validFor:Y}:l&&l.name==":"&&r.name=="Declaration"||r.name=="ArgList"?{from:t,options:lO,validFor:Y}:r.name=="Block"||r.name=="Styles"?{from:t,options:ge(),validFor:Y}:null},gi=$i(O=>O.name=="VariableName"),se=ce.define({name:"css",parser:ui.configure({props:[Qe.add({Declaration:A()}),ue.add({Block:kO})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function mi(){return new fe(se,se.data.of({autocomplete:gi}))}const Xi=303,oO=1,Pi=2,Zi=304,bi=306,xi=307,ki=3,wi=4,yi=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],DO=125,Yi=59,cO=47,Ti=42,Ui=43,vi=45,Vi=new vO({start:!1,shift(O,e){return e==ki||e==wi||e==bi?O:e==xi},strict:!1}),Ri=new b((O,e)=>{let{next:a}=O;(a==DO||a==-1||e.context)&&O.acceptToken(Zi)},{contextual:!0,fallback:!0}),_i=new b((O,e)=>{let{next:a}=O,t;yi.indexOf(a)>-1||a==cO&&((t=O.peek(1))==cO||t==Ti)||a!=DO&&a!=Yi&&a!=-1&&!e.context&&O.acceptToken(Xi)},{contextual:!0}),Ci=new b((O,e)=>{let{next:a}=O;if((a==Ui||a==vi)&&(O.advance(),a==O.next)){O.advance();let t=!e.context&&e.canShift(oO);O.acceptToken(t?oO:Pi)}},{contextual:!0}),Wi=oe({"get set async static":n.modifier,"for while do if else switch try catch finally return throw break continue default case":n.controlKeyword,"in of await yield void typeof delete instanceof":n.operatorKeyword,"let var const function class extends":n.definitionKeyword,"import export from":n.moduleKeyword,"with debugger as new":n.keyword,TemplateString:n.special(n.string),super:n.atom,BooleanLiteral:n.bool,this:n.self,null:n.null,Star:n.modifier,VariableName:n.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":n.function(n.variableName),VariableDefinition:n.definition(n.variableName),Label:n.labelName,PropertyName:n.propertyName,PrivatePropertyName:n.special(n.propertyName),"CallExpression/MemberExpression/PropertyName":n.function(n.propertyName),"FunctionDeclaration/VariableDefinition":n.function(n.definition(n.variableName)),"ClassDeclaration/VariableDefinition":n.definition(n.className),PropertyDefinition:n.definition(n.propertyName),PrivatePropertyDefinition:n.definition(n.special(n.propertyName)),UpdateOp:n.updateOperator,LineComment:n.lineComment,BlockComment:n.blockComment,Number:n.number,String:n.string,Escape:n.escape,ArithOp:n.arithmeticOperator,LogicOp:n.logicOperator,BitOp:n.bitwiseOperator,CompareOp:n.compareOperator,RegExp:n.regexp,Equals:n.definitionOperator,Arrow:n.function(n.punctuation),": Spread":n.punctuation,"( )":n.paren,"[ ]":n.squareBracket,"{ }":n.brace,"InterpolationStart InterpolationEnd":n.special(n.brace),".":n.derefOperator,", ;":n.separator,"@":n.meta,TypeName:n.typeName,TypeDefinition:n.definition(n.typeName),"type enum interface implements namespace module declare":n.definitionKeyword,"abstract global Privacy readonly override":n.modifier,"is keyof unique infer":n.operatorKeyword,JSXAttributeValue:n.attributeValue,JSXText:n.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":n.angleBracket,"JSXIdentifier JSXNameSpacedName":n.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":n.attributeName,"JSXBuiltin/JSXIdentifier":n.standard(n.tagName)}),qi={__proto__:null,export:14,as:19,from:27,default:30,async:35,function:36,extends:46,this:50,true:58,false:58,null:70,void:74,typeof:78,super:96,new:130,delete:146,yield:155,await:159,class:164,public:221,private:221,protected:221,readonly:223,instanceof:242,satisfies:245,in:246,const:248,import:280,keyof:335,unique:339,infer:345,is:381,abstract:401,implements:403,type:405,let:408,var:410,using:413,interface:419,enum:423,namespace:429,module:431,declare:435,global:439,for:458,of:467,while:470,with:474,do:478,if:482,else:484,switch:488,case:494,try:500,catch:504,finally:508,return:512,throw:516,break:520,continue:524,debugger:528},ji={__proto__:null,async:117,get:119,set:121,declare:181,public:183,private:183,protected:183,static:185,abstract:187,override:189,readonly:195,accessor:197,new:385},zi={__proto__:null,"<":137},Gi=v.deserialize({version:14,states:"$6tO`QUOOO%TQUOOO'WQWOOP(eOSOOO*sQ(CjO'#CfO*zOpO'#CgO+YO!bO'#CgO+hO07`O'#DZO-yQUO'#DaO.ZQUO'#DlO%TQUO'#DvO0_QUO'#EOOOQ(CY'#EW'#EWO0xQSO'#ETOOQO'#Ei'#EiOOQO'#Ic'#IcO1QQSO'#GkO1]QSO'#EhO1bQSO'#EhO3dQ(CjO'#JdO6TQ(CjO'#JeO6qQSO'#FWO6vQ#tO'#FoOOQ(CY'#F`'#F`O7RO&jO'#F`O7aQ,UO'#FvO8wQSO'#FuOOQ(CY'#Je'#JeOOQ(CW'#Jd'#JdO8|QSO'#GoOOQQ'#KP'#KPO9XQSO'#IPO9^Q(C[O'#IQOOQQ'#JQ'#JQOOQQ'#IU'#IUQ`QUOOO%TQUO'#DnO9fQUO'#DzO9mQUO'#D|O9SQSO'#GkO9tQ,UO'#ClO:SQSO'#EgO:_QSO'#ErO:dQ,UO'#F_O;RQSO'#GkOOQO'#KQ'#KQO;WQSO'#KQO;fQSO'#GsO;fQSO'#GtO;fQSO'#GvO9SQSO'#GyO<]QSO'#G|O=tQSO'#CbO>UQSO'#HYO>^QSO'#H`O>^QSO'#HbO`QUO'#HdO>^QSO'#HfO>^QSO'#HiO>cQSO'#HoO>hQ(C]O'#HuO%TQUO'#HwO>sQ(C]O'#HyO?OQ(C]O'#H{O9^Q(C[O'#H}O?ZQ(CjO'#CfO@]QWO'#DfQOQSOOO%TQUO'#D|O@sQSO'#EPO9tQ,UO'#EgOAOQSO'#EgOAZQ`O'#F_OOQQ'#Cd'#CdOOQ(CW'#Dk'#DkOOQ(CW'#Jh'#JhO%TQUO'#JhOOQO'#Jl'#JlOOQO'#I`'#I`OBZQWO'#E`OOQ(CW'#E_'#E_OCVQ(C`O'#E`OCaQWO'#ESOOQO'#Jk'#JkOCuQWO'#JlOESQWO'#ESOCaQWO'#E`PEaO?MpO'#C`POOO)CDo)CDoOOOO'#IV'#IVOElOpO,59ROOQ(CY,59R,59ROOOO'#IW'#IWOEzO!bO,59RO%TQUO'#D]OOOO'#IY'#IYOFYO07`O,59uOOQ(CY,59u,59uOFhQUO'#IZOF{QSO'#JfOH}QbO'#JfO+vQUO'#JfOIUQSO,59{OIlQSO'#EiOIyQSO'#JtOJUQSO'#JsOJUQSO'#JsOJ^QSO,5;VOJcQSO'#JrOOQ(CY,5:W,5:WOJjQUO,5:WOLkQ(CjO,5:bOM[QSO,5:jOMuQ(C[O'#JqOM|QSO'#JpO8|QSO'#JpONbQSO'#JpONjQSO,5;UONoQSO'#JpO!!wQbO'#JeOOQ(CY'#Cf'#CfO%TQUO'#EOO!#gQ`O,5:oOOQO'#Jm'#JmOOQO-EkOOQQ'#JY'#JYOOQQ,5>l,5>lOOQQ-EqQ(CjO,5:hOOQO,5@l,5@lO!?bQ,UO,5=VO!?pQ(C[O'#JZO8wQSO'#JZO!@RQ(C[O,59WO!@^QWO,59WO!@fQ,UO,59WO9tQ,UO,59WO!@qQSO,5;SO!@yQSO'#HXO!A[QSO'#KUO%TQUO,5;wO!7[QWO,5;yO!AdQSO,5=rO!AiQSO,5=rO!AnQSO,5=rO9^Q(C[O,5=rO;fQSO,5=bOOQO'#Cr'#CrO!A|QWO,5=_O!BUQ,UO,5=`O!BaQSO,5=bO!BfQ`O,5=eO!BnQSO'#KQO>cQSO'#HOO9SQSO'#HQO!BsQSO'#HQO9tQ,UO'#HSO!BxQSO'#HSOOQQ,5=h,5=hO!B}QSO'#HTO!CVQSO'#ClO!C[QSO,58|O!CfQSO,58|O!EkQUO,58|OOQQ,58|,58|O!E{Q(C[O,58|O%TQUO,58|O!HWQUO'#H[OOQQ'#H]'#H]OOQQ'#H^'#H^O`QUO,5=tO!HnQSO,5=tO`QUO,5=zO`QUO,5=|O!HsQSO,5>OO`QUO,5>QO!HxQSO,5>TO!H}QUO,5>ZOOQQ,5>a,5>aO%TQUO,5>aO9^Q(C[O,5>cOOQQ,5>e,5>eO!MXQSO,5>eOOQQ,5>g,5>gO!MXQSO,5>gOOQQ,5>i,5>iO!M^QWO'#DXO%TQUO'#JhO!M{QWO'#JhO!NjQWO'#DgO!N{QWO'#DgO##^QUO'#DgO##eQSO'#JgO##mQSO,5:QO##rQSO'#EmO#$QQSO'#JuO#$YQSO,5;WO#$_QWO'#DgO#$lQWO'#EROOQ(CY,5:k,5:kO%TQUO,5:kO#$sQSO,5:kO>cQSO,5;RO!@^QWO,5;RO!@fQ,UO,5;RO9tQ,UO,5;RO#${QSO,5@SO#%QQ!LQO,5:oOOQO-E<^-E<^O#&WQ(C`O,5:zOCaQWO,5:nO#&bQWO,5:nOCaQWO,5:zO!@RQ(C[O,5:nOOQ(CW'#Ec'#EcOOQO,5:z,5:zO%TQUO,5:zO#&oQ(C[O,5:zO#&zQ(C[O,5:zO!@^QWO,5:nOOQO,5;Q,5;QO#'YQ(C[O,5:zPOOO'#IT'#ITP#'nO?MpO,58zPOOO,58z,58zOOOO-EuO+vQUO,5>uOOQO,5>{,5>{O#(YQUO'#IZOOQO-E^QSO1G3jO$.VQUO1G3lO$2ZQUO'#HkOOQQ1G3o1G3oO$2hQSO'#HqO>cQSO'#HsOOQQ1G3u1G3uO$2pQUO1G3uO9^Q(C[O1G3{OOQQ1G3}1G3}OOQ(CW'#GW'#GWO9^Q(C[O1G4PO9^Q(C[O1G4RO$6wQSO,5@SO!){QUO,5;XO8|QSO,5;XO>cQSO,5:RO!){QUO,5:RO!@^QWO,5:RO$6|Q$IUO,5:ROOQO,5;X,5;XO$7WQWO'#I[O$7nQSO,5@ROOQ(CY1G/l1G/lO$7vQWO'#IbO$8QQSO,5@aOOQ(CW1G0r1G0rO!N{QWO,5:ROOQO'#I_'#I_O$8YQWO,5:mOOQ(CY,5:m,5:mO#$vQSO1G0VOOQ(CY1G0V1G0VO%TQUO1G0VOOQ(CY1G0m1G0mO>cQSO1G0mO!@^QWO1G0mO!@fQ,UO1G0mOOQ(CW1G5n1G5nO!@RQ(C[O1G0YOOQO1G0f1G0fO%TQUO1G0fO$8aQ(C[O1G0fO$8lQ(C[O1G0fO!@^QWO1G0YOCaQWO1G0YO$8zQ(C[O1G0fOOQO1G0Y1G0YO$9`Q(CjO1G0fPOOO-EuO$9|QSO1G5lO$:UQSO1G5yO$:^QbO1G5zO8|QSO,5>{O$:hQ(CjO1G5wO%TQUO1G5wO$:xQ(C[O1G5wO$;ZQSO1G5vO$;ZQSO1G5vO8|QSO1G5vO$;cQSO,5?OO8|QSO,5?OOOQO,5?O,5?OO$;wQSO,5?OO$$XQSO,5?OOOQO-ExQ(CjO,5VOOQQ,5>V,5>VO%TQUO'#HlO%(dQSO'#HnOOQQ,5>],5>]O8|QSO,5>]OOQQ,5>_,5>_OOQQ7+)a7+)aOOQQ7+)g7+)gOOQQ7+)k7+)kOOQQ7+)m7+)mO%(iQWO1G5nO%(}Q$IUO1G0sO%)XQSO1G0sOOQO1G/m1G/mO%)dQ$IUO1G/mO>cQSO1G/mO!){QUO'#DgOOQO,5>v,5>vOOQO-E|,5>|OOQO-E<`-E<`O!@^QWO1G/mOOQO-E<]-E<]OOQ(CY1G0X1G0XOOQ(CY7+%q7+%qO#$vQSO7+%qOOQ(CY7+&X7+&XO>cQSO7+&XO!@^QWO7+&XOOQO7+%t7+%tO$9`Q(CjO7+&QOOQO7+&Q7+&QO%TQUO7+&QO%)nQ(C[O7+&QO!@RQ(C[O7+%tO!@^QWO7+%tO%)yQ(C[O7+&QO%*XQ(CjO7++cO%TQUO7++cO%*iQSO7++bO%*iQSO7++bOOQO1G4j1G4jO8|QSO1G4jO%*qQSO1G4jOOQO7+%y7+%yO#$vQSO<wOOQO-ExO%TQUO,5>xOOQO-E<[-E<[O%2qQSO1G5pOOQ(CY<bQ$IUO1G0xO%>iQ$IUO1G0xO%@aQ$IUO1G0xO%@tQ(CjO<WOOQQ,5>Y,5>YO%N_QSO1G3wO8|QSO7+&_O!){QUO7+&_OOQO7+%X7+%XO%NdQ$IUO1G5zO>cQSO7+%XOOQ(CY<cQSO<cQSO7+)cO&5{QSO<zAN>zO%TQUOAN?WOOQO<TQSO<= cOOQQG27jG27jO9^Q(C[OG27jO!){QUO1G4uO&>]QSO7++tO%LpQSOANAxOOQQANAxANAxO!&VQ,UOANAxO&>eQSOANAxOOQQANAzANAzO9^Q(C[OANAzO#MzQSOANAzOOQO'#HV'#HVOOQO7+*d7+*dOOQQG22tG22tOOQQANEOANEOOOQQANEPANEPOOQQANBSANBSO&>mQSOANBSOOQQ<rQSOLD,iO&>zQ$IUO7+'sO&@pQ$IUO7+'uO&BfQ,UOG26{OOQO<ROPYXXYXkYXyYXzYX|YX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX!VYX!WYX~O#yYX~P#@lOP$[OX:XOk9{Oy#xOz#yO|#zO!e9}O!f#vO!h#wO!l$[O#g9yO#h9zO#i9zO#j9zO#k9|O#l9}O#m9}O#n:WO#o9}O#q:OO#s:QO#u:SO#v:TO(SVO(c$YO(j#{O(k#|O~O#y.hO~P#ByO#X:YO#{:YO#y(XX!W(XX~PN}O^'Za!V'Za'l'Za'j'Za!g'Za!S'Zao'Za!X'Za%a'Za!a'Za~P!7sOP#fiX#fi^#fik#fiz#fi!V#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi'l#fi(S#fi(c#fi'j#fi!S#fi!g#fio#fi!X#fi%a#fi!a#fi~P#,`O^#zi!V#zi'l#zi'j#zi!S#zi!g#zio#zi!X#zi%a#zi!a#zi~P!7sO$W.mO$Y.mO~O$W.nO$Y.nO~O!a)^O#X.oO!X$^X$T$^X$W$^X$Y$^X$a$^X~O!U.pO~O!X)aO$T.rO$W)`O$Y)`O$a.sO~O!V:UO!W(WX~P#ByO!W.tO~O!a)^O$a(lX~O$a.vO~Oq)pO(T)qO(U.yO~Ol.|O!S.}O'wTO'zUO~O!VcX!acX!gcX!g$sX(ccX~P!/ZO!g/TO~P#,`O!V/UO!a#tO(c'fO!g(pX~O!g/ZO~O!U*RO'u%_O!g(pP~O#d/]O~O!S$sX!V$sX!a$zX~P!/ZO!V/^O!S(qX~P#,`O!a/`O~O!S/bO~Ok/fO!a#tO!h%]O(O%QO(c'fO~O'u/hO~O!a+XO~O^%fO!V/lO'l%fO~O!W/nO~P!3XO!]/oO!^/oO'v!kO(V!lO~O|/qO(V!lO~O#T/rO~O'u&POd'`X!V'`X~O!V*kOd(Pa~Od/wO~Oy/xOz/xO|/yOgva(jva(kva!Vva#Xva~Odva#yva~P$ hOy)uO|)vOg$la(j$la(k$la!V$la#X$la~Od$la#y$la~P$!^Oy)uO|)vOg$na(j$na(k$na!V$na#X$na~Od$na#y$na~P$#PO#d/{O~Od$|a!V$|a#X$|a#y$|a~P!0dO!a#tO~O#d0OO~O!V*|O^(ua'l(ua~Oy#xOz#yO|#zO!f#vO!h#wO(SVOP!niX!nik!ni!V!ni!e!ni!l!ni#g!ni#h!ni#i!ni#j!ni#k!ni#l!ni#m!ni#n!ni#o!ni#q!ni#s!ni#u!ni#v!ni(c!ni(j!ni(k!ni~O^!ni'l!ni'j!ni!S!ni!g!nio!ni!X!ni%a!ni!a!ni~P$$nOg.TO!X'UO%a.SO~Oi0YO'u0XO~P!1UO!a+XO^'}a!X'}a'l'}a!V'}a~O#d0`O~OXYX!VcX!WcX~O!V0aO!W(yX~O!W0cO~OX0dO~O'u+aO'wTO'zUO~O!X%vO'u%_O]'hX!V'hX~O!V+fO](xa~O!g0iO~P!7sOX0lO~O]0mO~O#X0pO~Og0sO!X${O~O(V(sO!W(vP~Og0|O!X0yO%a0{O(O%QO~OX1WO!V1UO!W(wX~O!W1XO~O]1ZO^%fO'l%fO~O'u#lO'wTO'zUO~O#X$dO#{$dOP(XXX(XXk(XXy(XXz(XX|(XX!V(XX!e(XX!h(XX!l(XX#g(XX#h(XX#i(XX#j(XX#k(XX#l(XX#m(XX#n(XX#q(XX#s(XX#u(XX#v(XX(S(XX(c(XX(j(XX(k(XX~O#o1^O&R1_O^(XX!f(XX~P$+dO#X$dO#o1^O&R1_O~O^1aO~P%TO^1cO~O&[1fOP&YiQ&YiV&Yi^&Yia&Yib&Yii&Yik&Yil&Yim&Yis&Yiu&Yiw&Yi|&Yi!Q&Yi!R&Yi!X&Yi!c&Yi!h&Yi!k&Yi!l&Yi!m&Yi!o&Yi!q&Yi!t&Yi!x&Yi#p&Yi$Q&Yi$U&Yi%`&Yi%b&Yi%d&Yi%e&Yi%f&Yi%i&Yi%k&Yi%n&Yi%o&Yi%q&Yi%}&Yi&T&Yi&V&Yi&X&Yi&Z&Yi&^&Yi&d&Yi&j&Yi&l&Yi&n&Yi&p&Yi&r&Yi'j&Yi'u&Yi'w&Yi'z&Yi(S&Yi(b&Yi(o&Yi!W&Yi_&Yi&a&Yi~O_1lO!W1jO&a1kO~P`O!XXO!h1nO~O&h,iOP&ciQ&ciV&ci^&cia&cib&cii&cik&cil&cim&cis&ciu&ciw&ci|&ci!Q&ci!R&ci!X&ci!c&ci!h&ci!k&ci!l&ci!m&ci!o&ci!q&ci!t&ci!x&ci#p&ci$Q&ci$U&ci%`&ci%b&ci%d&ci%e&ci%f&ci%i&ci%k&ci%n&ci%o&ci%q&ci%}&ci&T&ci&V&ci&X&ci&Z&ci&^&ci&d&ci&j&ci&l&ci&n&ci&p&ci&r&ci'j&ci'u&ci'w&ci'z&ci(S&ci(b&ci(o&ci!W&ci&[&ci_&ci&a&ci~O!S1tO~O!V!Za!W!Za~P#ByOl!mO|!nO!U1zO(V!lO!V'OX!W'OX~P?wO!V,yO!W(Za~O!V'UX!W'UX~P!6{O!V,|O!W(ia~O!W2RO~P'WO^%fO#X2[O'l%fO~O^%fO!a#tO#X2[O'l%fO~O^%fO!a#tO!l2`O#X2[O'l%fO(c'fO~O^%fO'l%fO~P!7sO!V$`Oo$ka~O!S&}i!V&}i~P!7sO!V'zO!S(Yi~O!V(RO!S(gi~O!S(hi!V(hi~P!7sO!V(ei!g(ei^(ei'l(ei~P!7sO#X2bO!V(ei!g(ei^(ei'l(ei~O!V(_O!g(di~O|%`O!X%aO!x]O#b2gO#c2fO'u%_O~O|%`O!X%aO#c2fO'u%_O~Og2nO!X'UO%a2mO~Og2nO!X'UO%a2mO(O%QO~O#dvaPvaXva^vakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva'lva(Sva(cva!gva!Sva'jvaova!Xva%ava!ava~P$ hO#d$laP$laX$la^$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la'l$la(S$la(c$la!g$la!S$la'j$lao$la!X$la%a$la!a$la~P$!^O#d$naP$naX$na^$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na'l$na(S$na(c$na!g$na!S$na'j$nao$na!X$na%a$na!a$na~P$#PO#d$|aP$|aX$|a^$|ak$|az$|a!V$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a'l$|a(S$|a(c$|a!g$|a!S$|a'j$|a#X$|ao$|a!X$|a%a$|a!a$|a~P#,`O^#[q!V#[q'l#[q'j#[q!S#[q!g#[qo#[q!X#[q%a#[q!a#[q~P!7sOd'PX!V'PX~P!'oO!V.^Od(]a~O!U2vO!V'QX!g'QX~P%TO!V.aO!g(^a~O!V.aO!g(^a~P!7sO!S2yO~O#y!ja!W!ja~PJqO#y!ba!V!ba!W!ba~P#ByO#y!na!W!na~P!:^O#y!pa!W!pa~P!pO^#wy!V#wy'l#wy'j#wy!S#wy!g#wyo#wy!X#wy%a#wy!a#wy~P!7sOg;lOy)uO|)vO(j)xO(k)zO~OP#fiX#fik#fiz#fi!e#fi!f#fi!h#fi!l#fi#g#fi#h#fi#i#fi#j#fi#k#fi#l#fi#m#fi#n#fi#o#fi#q#fi#s#fi#u#fi#v#fi#y#fi(S#fi(c#fi!V#fi!W#fi~P%AhO!f#vOP(RXX(RXg(RXk(RXy(RXz(RX|(RX!e(RX!h(RX!l(RX#g(RX#h(RX#i(RX#j(RX#k(RX#l(RX#m(RX#n(RX#o(RX#q(RX#s(RX#u(RX#v(RX#y(RX(S(RX(c(RX(j(RX(k(RX!V(RX!W(RX~O#y#zi!V#zi!W#zi~P#ByO#y!ni!W!ni~P$$nO!W6_O~O!V'Za!W'Za~P#ByO!a#tO(c'fO!V'[a!g'[a~O!V/UO!g(pi~O!V/UO!a#tO!g(pi~Od$uq!V$uq#X$uq#y$uq~P!0dO!S'^a!V'^a~P#,`O!a6fO~O!V/^O!S(qi~P#,`O!V/^O!S(qi~O!S6jO~O!a#tO#o6oO~Ok6pO!a#tO(c'fO~O!S6rO~Od$wq!V$wq#X$wq#y$wq~P!0dO^$iy!V$iy'l$iy'j$iy!S$iy!g$iyo$iy!X$iy%a$iy!a$iy~P!7sO!a5jO~O!V4VO!X(ra~O^#[y!V#[y'l#[y'j#[y!S#[y!g#[yo#[y!X#[y%a#[y!a#[y~P!7sOX6wO~O!V0aO!W(yi~O]6}O~O(V(sO!V'cX!W'cX~O!V4mO!W(va~OikO'u7UO~P.bO!W7XO~P%$wOl!mO|7YO'wTO'zUO(V!lO(b!rO~O!X0yO~O!X0yO%a7[O~Og7_O!X0yO%a7[O~OX7dO!V'fa!W'fa~O!V1UO!W(wi~O!g7hO~O!g7iO~O!g7lO~O!g7lO~P%TO^7nO~O!a7oO~O!g7pO~O!V(hi!W(hi~P#ByO^%fO#X7xO'l%fO~O!V(ey!g(ey^(ey'l(ey~P!7sO!V(_O!g(dy~O!X'UO%a7{O~O#d$uqP$uqX$uq^$uqk$uqz$uq!V$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq'l$uq(S$uq(c$uq!g$uq!S$uq'j$uq#X$uqo$uq!X$uq%a$uq!a$uq~P#,`O#d$wqP$wqX$wq^$wqk$wqz$wq!V$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq'l$wq(S$wq(c$wq!g$wq!S$wq'j$wq#X$wqo$wq!X$wq%a$wq!a$wq~P#,`O!V'Qi!g'Qi~P!7sO#y#[q!V#[q!W#[q~P#ByOy/xOz/xO|/yOPvaXvagvakva!eva!fva!hva!lva#gva#hva#iva#jva#kva#lva#mva#nva#ova#qva#sva#uva#vva#yva(Sva(cva(jva(kva!Vva!Wva~Oy)uO|)vOP$laX$lag$lak$laz$la!e$la!f$la!h$la!l$la#g$la#h$la#i$la#j$la#k$la#l$la#m$la#n$la#o$la#q$la#s$la#u$la#v$la#y$la(S$la(c$la(j$la(k$la!V$la!W$la~Oy)uO|)vOP$naX$nag$nak$naz$na!e$na!f$na!h$na!l$na#g$na#h$na#i$na#j$na#k$na#l$na#m$na#n$na#o$na#q$na#s$na#u$na#v$na#y$na(S$na(c$na(j$na(k$na!V$na!W$na~OP$|aX$|ak$|az$|a!e$|a!f$|a!h$|a!l$|a#g$|a#h$|a#i$|a#j$|a#k$|a#l$|a#m$|a#n$|a#o$|a#q$|a#s$|a#u$|a#v$|a#y$|a(S$|a(c$|a!V$|a!W$|a~P%AhO#y$hq!V$hq!W$hq~P#ByO#y$iq!V$iq!W$iq~P#ByO!W8VO~O#y8WO~P!0dO!a#tO!V'[i!g'[i~O!a#tO(c'fO!V'[i!g'[i~O!V/UO!g(pq~O!S'^i!V'^i~P#,`O!V/^O!S(qq~O!S8^O~P#,`O!S8^O~Od(Qy!V(Qy~P!0dO!V'aa!X'aa~P#,`O^%Tq!X%Tq'l%Tq!V%Tq~P#,`OX8cO~O!V0aO!W(yq~O#X8gO!V'ca!W'ca~O!V4mO!W(vi~P#ByOPYXXYXkYXyYXzYX|YX!SYX!VYX!eYX!fYX!hYX!lYX#XYX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX~O!a%RX#o%RX~P&2hO!X0yO%a8kO~O'wTO'zUO(V8pO~O!V1UO!W(wq~O!g8sO~O!g8tO~O!g8uO~O!g8uO~P%TO#X8xO!V#ay!W#ay~O!V#ay!W#ay~P#ByO!X'UO%a8}O~O#y#wy!V#wy!W#wy~P#ByOP$uiX$uik$uiz$ui!e$ui!f$ui!h$ui!l$ui#g$ui#h$ui#i$ui#j$ui#k$ui#l$ui#m$ui#n$ui#o$ui#q$ui#s$ui#u$ui#v$ui#y$ui(S$ui(c$ui!V$ui!W$ui~P%AhOy)uO|)vO(k)zOP%XiX%Xig%Xik%Xiz%Xi!e%Xi!f%Xi!h%Xi!l%Xi#g%Xi#h%Xi#i%Xi#j%Xi#k%Xi#l%Xi#m%Xi#n%Xi#o%Xi#q%Xi#s%Xi#u%Xi#v%Xi#y%Xi(S%Xi(c%Xi(j%Xi!V%Xi!W%Xi~Oy)uO|)vOP%ZiX%Zig%Zik%Ziz%Zi!e%Zi!f%Zi!h%Zi!l%Zi#g%Zi#h%Zi#i%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#q%Zi#s%Zi#u%Zi#v%Zi#y%Zi(S%Zi(c%Zi(j%Zi(k%Zi!V%Zi!W%Zi~O#y$iy!V$iy!W$iy~P#ByO#y#[y!V#[y!W#[y~P#ByO!a#tO!V'[q!g'[q~O!V/UO!g(py~O!S'^q!V'^q~P#,`O!S9UO~P#,`O!V0aO!W(yy~O!V4mO!W(vq~O!X0yO%a9]O~O!g9`O~O!X'UO%a9eO~OP$uqX$uqk$uqz$uq!e$uq!f$uq!h$uq!l$uq#g$uq#h$uq#i$uq#j$uq#k$uq#l$uq#m$uq#n$uq#o$uq#q$uq#s$uq#u$uq#v$uq#y$uq(S$uq(c$uq!V$uq!W$uq~P%AhOP$wqX$wqk$wqz$wq!e$wq!f$wq!h$wq!l$wq#g$wq#h$wq#i$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#q$wq#s$wq#u$wq#v$wq#y$wq(S$wq(c$wq!V$wq!W$wq~P%AhOd%]!Z!V%]!Z#X%]!Z#y%]!Z~P!0dO!V'cq!W'cq~P#ByO!V#a!Z!W#a!Z~P#ByO#d%]!ZP%]!ZX%]!Z^%]!Zk%]!Zz%]!Z!V%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z'l%]!Z(S%]!Z(c%]!Z!g%]!Z!S%]!Z'j%]!Z#X%]!Zo%]!Z!X%]!Z%a%]!Z!a%]!Z~P#,`OP%]!ZX%]!Zk%]!Zz%]!Z!e%]!Z!f%]!Z!h%]!Z!l%]!Z#g%]!Z#h%]!Z#i%]!Z#j%]!Z#k%]!Z#l%]!Z#m%]!Z#n%]!Z#o%]!Z#q%]!Z#s%]!Z#u%]!Z#v%]!Z#y%]!Z(S%]!Z(c%]!Z!V%]!Z!W%]!Z~P%AhOo(WX~P1jO'v!kO~P!){O!ScX!VcX#XcX~P&2hOPYXXYXkYXyYXzYX|YX!VYX!VcX!eYX!fYX!hYX!lYX#XYX#XcX#dcX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#oYX#qYX#sYX#uYX#vYX#{YX(SYX(cYX(jYX(kYX~O!acX!gYX!gcX(ccX~P&HOOP9pOQ9pOa;aOb!hOikOk9pOlkOmkOskOu9pOw9pO|WO!QkO!RkO!XXO!c9sO!hZO!k9pO!l9pO!m9pO!o9tO!q9wO!t!gO$Q!jO$UfO'u)TO'wTO'zUO(SVO(b[O(o;_O~O!V:UO!W$ka~Oi%ROk$sOl$rOm$rOs%SOu%TOw:[O|$zO!X${O!c;fO!h$wO#c:bO$Q%XO$m:^O$o:`O$r%YO'u(kO'wTO'zUO(O%QO(S$tO~O#p)[O~P&LtO!WYX!WcX~P&HOO#d9xO~O!a#tO#d9xO~O#X:YO~O#o9}O~O#X:dO!V(hX!W(hX~O#X:YO!V(fX!W(fX~O#d:eO~Od:gO~P!0dO#d:lO~O#d:mO~O!a#tO#d:nO~O!a#tO#d:eO~O#y:oO~P#ByO#d:pO~O#d:qO~O#d:rO~O#d:sO~O#d:tO~O#d:uO~O#y:vO~P!0dO#y:wO~P!0dO$U~!f!|!}#P#Q#T#b#c#n(o$m$o$r%U%`%a%b%i%k%n%o%q%s~'pR$U(o#h!R'n'v#il#g#jky'o(V'o'u$W$Y$W~",goto:"$&O(}PPPP)OP)RP)cP*r.uPPPP5WPP5mP;h>mP?QP?QPPP?QP@pP?QP?QP?QP@tPP@yPAdPFZPPPF_PPPPF_I_PPPIeJ`PF_PLmPPPPN{F_PPPF_PF_P!#ZF_P!&n!'p!'yP!(l!(p!(lPPPPP!+z!'pPP!,h!-bP!0UF_F_!0Z!3d!7x!7x!;mPPP!;tF_PPPPPPPPPPP!?QP!@cPPF_!ApPF_PF_F_F_F_PF_!CSPP!FZP!I^P!Ib!Il!Ip!IpP!FWP!It!ItP!LwP!L{F_F_!MR#!T?QP?QP?Q?QP##_?Q?Q#%X?Q#'f?Q#)Y?Q?Q#)v#+r#+r#+v#,O#+r#,WP#+rP?Q#,p?Q#-x?Q?Q5WPPP#/TPPP#/m#/mP#/mP#0S#/mPP#0YP#0PP#0P#0l#0P#1W#1^5T)R#1a)RP#1h#1h#1hP)RP)RP)RP)RPP)RP#1n#1qP#1q)RP#1uP#1xP)RP)RP)RP)RP)RP)R)RPP#2O#2U#2`#2f#2l#2r#2x#3W#3^#3d#3n#3t#4O#4_#4e#5U#5h#5n#5t#6S#6i#7y#8X#8_#8e#8k#8q#8{#9R#9X#9c#9u#9{PPPPPPPPPP#:RPPPPPPP#:u#=|P#?]#?d#?lPPPP#Cv#Fl#MS#MV#MY#NR#NU#NX#N`#NhPP#Nn#Nr$ j$!i$!m$#RPP$#V$#]$#aP$#d$#h$#k$$a$$w$%_$%c$%f$%i$%o$%r$%v$%zR!zRmqOXs!Y#b%e&h&j&k&m,a,f1f1iY!tQ'U-R0y4tQ%kuQ%sxQ%z{Q&`!US&|!d,yQ'[!hS'b!q!wS*^${*cQ+_%tQ+l%|Q,Q&YQ-P'TQ-Z']Q-c'cQ/o*eQ1T,RR:c9t$|dOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{,^,a,f-V-_-m-s.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2v4q4{5]5^5a5t7Y7_7n7xS#o]9q!r)V$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ*n%UQ+d%vQ,S&]Q,Z&eQ.W:ZQ0V+VQ0Z+XQ0f+eQ1],XQ2j.TQ4_0aQ5S1UQ6Q2nQ6W:[Q6y4`R8O6R&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bt!mQ!q!t!w!x&|'T'U'b'c'd,y-P-R-c0y4t4v$Y$ri#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lQ%}{Q&z!dS'Q%a,|Q+d%vS.|)v/OQ/z*rQ0f+eQ0k+kQ1[,WQ1],XQ4_0aQ4h0mQ5V1WQ5W1ZQ6y4`Q6|4eQ7g5YQ8f6}R8q7dpnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iR,U&a&t^OPXYstuvy!Y!_!f!i!n#Q#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y'W'h'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;a;b[#ZWZ#U#X&}'x!S%bm#f#g#j%]%`(R(](^(_*y*z*|,],s-q-w-x-y-{1n2f2g5j5{Q%nwQ%rxS%w{%|Q&T!SQ'X!gQ'Z!hQ(f#qS*Q$w*US+^%s%tQ+b%vQ+{&WQ,P&YS-Y'[']Q.V(gQ/Y*RQ0_+_Q0e+eQ0g+fQ0j+jQ1O+|S1S,Q,RQ2W-ZQ3f/UQ4^0aQ4b0dQ4g0lQ5R1TQ6c3gQ6x4`Q6{4dQ8b6wR9W8cv$yi#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!S%px!h!s%r%s%t&{'Z'[']'a'k*]+^+_,v-Y-Z-b/g0_2P2W2_3yQ+W%nQ+q&QQ+t&RQ,O&YQ.U(fQ0}+{U1R,P,Q,RQ2o.VQ4|1OS5Q1S1TQ7c5R!z;c#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lg;d:W:X:^:`:b:i:k:m:q:s:wW%Oi%Q*k;_S&Q!P&_Q&R!QQ&S!RR+o&O$Z$}i#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lT)q$t)rV*o%U:Z:[U'Q!d%a,|S(t#x#yQ+i%yS.O(b(cQ0t+uQ4O/xR7R4m&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;b$i$_c#W#c%i%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.i.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;UT#RV#S&{kOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ'O!dR1{,yv!mQ!d!q!t!w!x&|'T'U'b'c'd,y-P-R-c0y4t4vS*]${*cS/g*^*eQ/p*fQ0v+wQ3y/oR3|/rlqOXs!Y#b%e&h&j&k&m,a,f1f1iQ&o!]Q'l!vS(h#s9xQ+[%qQ+y&TQ+z&VQ-W'YQ-e'eS.[(m:eS/}*w:nQ0]+]Q0x+xQ1m,hQ1o,iQ1w,tQ2U-XQ2X-]S4T0O:tQ4Y0^S4]0`:uQ5l1yQ5p2VQ5u2^Q6v4ZQ7s5nQ7t5qQ7w5vR8w7p$d$^c#W#c%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;US(e#n'_U*h$|(l3YS+R%i.iQ2k0VQ5}2jQ7}6QR9O8O$d$]c#W#c%j%l'w'}(i(p(x(y(z({(|(})O)P)Q)R)S)U)X)])g+S+h,w-f-k-p-r.].c.g.j.k.z/|1u1x2Y2a2u2z2{2|2}3O3P3Q3R3S3T3U3V3W3Z3[3a4S4[5m5s5x6U6V6[6]7T7r7v8P8T8U8z9Y9a9r;US(d#n'_S(v#y$^S+Q%i.iS.P(c(eQ.l)WQ0S+RR2h.Q&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bS#o]9qQ&j!WQ&k!XQ&m!ZQ&n![R1e,dQ'V!gQ+T%nQ-U'XS.R(f+WQ2S-TW2l.U.V0U0WQ5o2TU5|2i2k2oS7z5}6PS8|7|7}S9c8{9OQ9k9dR9n9lU!uQ'U-RT4r0y4t!O_OXZ`s!U!Y#b#f%]%e&_&a&h&j&k&m(_,a,f-x1f1i]!oQ!q'U-R0y4tT#o]9q%WzOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xS(t#x#yS.O(b(c!s:{$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bY!sQ'U-R0y4tQ'a!qS'k!t!wS'm!x4vS-b'b'cQ-d'dR2_-cQ'j!sS(Z#e1`S-a'a'mQ/X*QQ/e*]Q2`-dQ3k/YS3t/f/pQ6b3fS6m3z3|Q8Y6cR8a6pQ#ubQ'i!sS(Y#e1`S([#k*vQ*x%^Q+Y%oQ+`%uU-`'a'j'mQ-t(ZQ/W*QQ/d*]Q/j*`Q0[+ZQ1P+}S2]-a-dQ2e-|S3j/X/YS3s/e/pQ3v/iQ3x/kQ5O1QQ5w2`Q6a3fQ6e3kS6i3t3|Q6n3{Q7a5PS8X6b6cQ8]6jQ8_6mQ8n7bQ9S8YQ9T8^Q9V8aQ9_8oQ9g9UQ;O:yQ;Z;SR;[;TV!uQ'U-R%WaOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xS#uy!i!r:x$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bR;O;a%WbOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xQ%^j!S%ox!h!s%r%s%t&{'Z'[']'a'k*]+^+_,v-Y-Z-b/g0_2P2W2_3yS%uy!iQ+Z%pQ+}&YW1Q,O,P,Q,RU5P1R1S1TS7b5Q5RQ8o7c!r:y$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ;S;`R;T;a$zeOPXYstuv!Y!_!f!n#Q#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7xY#`WZ#U#X'x!S%bm#f#g#j%]%`(R(](^(_*y*z*|,],s-q-w-x-y-{1n2f2g5j5{Q,[&e!p:z$Z$l)i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bR:}&}S'R!d%aR1},|$|dOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{,^,a,f-V-_-m-s.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2v4q4{5]5^5a5t7Y7_7n7x!r)V$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bQ,Z&eQ0V+VQ2j.TQ6Q2nR8O6R!f$Tc#W%i'w'}(i(p)P)Q)R)S)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9r!T:P)U)g,w.i1u1x2z3S3T3U3V3Z3a5m6V6[6]7T7r8P8T8U9Y9a;U!b$Vc#W%i'w'}(i(p)R)S)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9r!P:R)U)g,w.i1u1x2z3U3V3Z3a5m6V6[6]7T7r8P8T8U9Y9a;U!^$Zc#W%i'w'}(i(p)X)]+h-f-k-p-r.].c.z/|2Y2a2u3W4S4[5s5x6U7v8z9rQ3e/Sz;b)U)g,w.i1u1x2z3Z3a5m6V6[6]7T7r8P8T8U9Y9a;UQ;g;iR;h;j&zkOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bS$mh$nR3^.o'RgOPWXYZhstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l$n%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.o.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bT$if$oQ$gfS)`$j)dR)l$oT$hf$oT)b$j)d'RhOPWXYZhstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$Z$`$d$l$n%e%k%x&a&d&e&h&j&k&m&q&y&}'W'h'x'z(Q(X(m(q(u)i)t*w*{+V,^,a,f,r,u-V-_-m-s.T.a.h.o.p/y0O0`0|1^1_1a1c1f1i1k1z2[2b2n2v3]4o4q4{5]5^5a5k5t6R7Y7_7n7x8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;bT$mh$nQ$phR)k$n%WjOPWXYZstuv!Y!_!f!n#Q#U#X#b#m#s#w#z#}$O$P$Q$R$S$T$U$V$W$X$`$d%e%k%x&a&d&e&h&j&k&m&q&y'W'h'x'z(Q(X(m(q(u)t*w*{+V,^,a,f-V-_-m-s.T.a.h/y0O0`0|1^1_1a1c1f1i1k2[2b2n2v4q4{5]5^5a5t6R7Y7_7n7x!s;`$Z$l&})i,r,u.p1z3]4o5k8g8x9p9s9t9w9x9y9z9{9|9}:O:P:Q:R:S:T:U:Y:c:d:e:g:n:o:t:u;b#alOPXZs!Y!_!n#Q#b#m#z$l%e&a&d&e&h&j&k&m&q&y'W(u)i*{+V,^,a,f-V.T.p/y0|1^1_1a1c1f1i1k2n3]4q4{5]5^5a6R7Y7_7nv$|i#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!z(l#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lQ*s%YQ.{)ug3Y:W:X:^:`:b:i:k:m:q:s:wv$xi#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;hQ*V$yS*`${*cQ*t%ZQ/k*a!z;Q#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lf;R:W:X:^:`:b:i:k:m:q:s:wQ;V;cQ;W;dQ;X;eR;Y;fv$|i#v%V%W%[)y){*T*i*j.^/]/{3e3}8W;_;g;h!z(l#t$b$c$w$z)p)|*Z+U+X+p+s.S/^/`0p0s0{2m3o3w4V4X4z6O6f6o7[7{8k8}9]9e:]:_:a:h:j:l:p:r:v;k;lg3Y:W:X:^:`:b:i:k:m:q:s:wloOXs!Y#b%e&h&j&k&m,a,f1f1iQ*Y$zQ,o&tQ,p&vR3n/^$Y$}i#t#v$b$c$w$z%V%W%[)p)y){)|*T*Z*i*j+U+X+p+s.S.^/]/^/`/{0p0s0{2m3e3o3w3}4V4X4z6O6f6o7[7{8W8k8}9]9e:W:X:]:^:_:`:a:b:h:i:j:k:l:m:p:q:r:s:v:w;_;g;h;k;lQ+r&RQ0r+tQ4k0qR7Q4lT*b${*cS*b${*cT4s0y4tS/i*_4qT3{/q7YQ+Y%oQ/j*`Q0[+ZQ1P+}Q5O1QQ7a5PQ8n7bR9_8on)y$u(n*u/[/s/t2s3l4R6`6q9R;P;];^!W:h(j)Z*P*X.Z.w/S/a0T0o0q2r3m3q4j4l6S6T6g6k6s6u8[8`9f;i;j]:i3X6Z8Q9P9Q9op){$u(n*u/Q/[/s/t2s3l4R6`6q9R;P;];^!Y:j(j)Z*P*X.Z.w/S/a0T0o0q2p2r3m3q4j4l6S6T6g6k6s6u8[8`9f;i;j_:k3X6Z8Q8R9P9Q9opnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iQ&[!TR,^&epnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iR&[!TQ+v&SR0n+oqnOXs!U!Y#b%e&_&h&j&k&m,a,f1f1iQ0z+{S4y0}1OU7Z4w4x4|S8j7]7^S9Z8i8lQ9h9[R9m9iQ&c!UR,V&_R5V1WS%w{%|R0g+fQ&h!VR,a&iR,g&nT1g,f1iR,k&oQ,j&oR1p,kQ'o!yR-g'oQsOQ#bXT%hs#bQ!|TR'q!|Q#PUR's#PQ)r$tR.x)rQ#SVR'u#SQ#VWU'{#V'|-nQ'|#WR-n'}Q,z'OR1|,zQ._(nR2t._Q.b(pS2w.b2xR2x.cQ-R'UR2Q-RY!qQ'U-R0y4tR'`!qS#]W%`U(S#](T-oQ(T#^R-o(OQ,}'RR2O,}r`OXs!U!Y#b%e&_&a&h&j&k&m,a,f1f1iS#fZ%]U#p`#f-xR-x(_Q(`#hQ-u([W-}(`-u2c5yQ2c-vR5y2dQ)d$jR.q)dQ$nhR)j$nQ$acU)Y$a-j:VQ-j9rR:V)gQ/V*QW3h/V3i6d8ZU3i/W/X/YS6d3j3kR8Z6e#m)w$u(j(n)Z*P*X*p*q*u.X.Y.Z.w/Q/R/S/[/a/s/t0T0o0q2p2q2r2s3X3l3m3q4R4j4l6S6T6X6Y6Z6`6g6k6q6s6u8Q8R8S8[8`9P9Q9R9f9o;P;];^;i;jQ/_*XU3p/_3r6hQ3r/aR6h3qQ*c${R/m*cQ*l%PR/v*lQ4W0TR6t4WQ*}%cR0R*}Q4n0tS7S4n8hR8h7TQ+x&TR0w+xQ4t0yR7W4tQ1V,SS5T1V7eR7e5VQ0b+bW4a0b4c6z8dQ4c0eQ6z4bR8d6{Q+g%wR0h+gQ1i,fR5e1iWrOXs#bQ&l!YQ+P%eQ,`&hQ,b&jQ,c&kQ,e&mQ1d,aS1g,f1iR5d1fQ%gpQ&p!^Q&s!`Q&u!aQ&w!bQ'g!sQ+O%dQ+[%qQ+n%}Q,U&cQ,m&rW-^'a'i'j'mQ-e'eQ/l*bQ0]+]S1Y,V,YQ1q,lQ1r,oQ1s,pQ2X-]W2Z-`-a-d-fQ4Y0^Q4f0kQ4i0oQ4}1PQ5X1[Q5c1eU5r2Y2]2`Q5u2^Q6v4ZQ7O4hQ7P4jQ7V4sQ7`5OQ7f5WS7u5s5wQ7w5vQ8e6|Q8m7aQ8r7gQ8y7vQ9X8fQ9^8nQ9b8zR9j9_Q%qxQ'Y!hQ'e!sU+]%r%s%tQ,t&{U-X'Z'[']S-]'a'kQ/c*]S0^+^+_Q1y,vS2V-Y-ZQ2^-bQ3u/gQ4Z0_Q5n2PQ5q2WQ5v2_R6l3yS$vi;_R*m%QU%Pi%Q;_R/u*kQ$uiS(j#t+XQ(n#vS)Z$b$cQ*P$wQ*X$zQ*p%VQ*q%WQ*u%[Q.X:]Q.Y:_Q.Z:aQ.w)pQ/Q)yQ/R){Q/S)|Q/[*TQ/a*ZQ/s*iQ/t*jh0T+U.S0{2m4z6O7[7{8k8}9]9eQ0o+pQ0q+sQ2p:hQ2q:jQ2r:lQ2s.^S3X:W:XQ3l/]Q3m/^Q3q/`Q4R/{Q4j0pQ4l0sQ6S:pQ6T:rQ6X:^Q6Y:`Q6Z:bQ6`3eQ6g3oQ6k3wQ6q3}Q6s4VQ6u4XQ8Q:mQ8R:iQ8S:kQ8[6fQ8`6oQ9P:qQ9Q:sQ9R8WQ9f:vQ9o:wQ;P;_Q;];gQ;^;hQ;i;kR;j;llpOXs!Y#b%e&h&j&k&m,a,f1f1iQ!ePS#dZ#mQ&r!_U'^!n4q7YQ't#QQ(w#zQ)h$lS,Y&a&dQ,_&eQ,l&qQ,q&yQ-T'WQ.e(uQ.u)iQ0P*{Q0W+VQ1b,^Q2T-VQ2k.TQ3`.pQ4P/yQ4x0|Q5Z1^Q5[1_Q5`1aQ5b1cQ5g1kQ5}2nQ6^3]Q7^4{Q7j5]Q7k5^Q7m5aQ7}6RQ8l7_R8v7n#UcOPXZs!Y!_!n#b#m#z%e&a&d&e&h&j&k&m&q&y'W(u*{+V,^,a,f-V.T/y0|1^1_1a1c1f1i1k2n4q4{5]5^5a6R7Y7_7nQ#WWQ#cYQ%itQ%juS%lv!fS'w#U'zQ'}#XQ(i#sQ(p#wQ(x#}Q(y$OQ(z$PQ({$QQ(|$RQ(}$SQ)O$TQ)P$UQ)Q$VQ)R$WQ)S$XQ)U$ZQ)X$`Q)]$dW)g$l)i.p3]Q+S%kQ+h%xS,w&}1zQ-f'hS-k'x-mQ-p(QQ-r(XQ.](mQ.c(qQ.g9pQ.i9sQ.j9tQ.k9wQ.z)tQ/|*wQ1u,rQ1x,uQ2Y-_Q2a-sQ2u.aQ2z9xQ2{9yQ2|9zQ2}9{Q3O9|Q3P9}Q3Q:OQ3R:PQ3S:QQ3T:RQ3U:SQ3V:TQ3W.hQ3Z:YQ3[:cQ3a:UQ4S0OQ4[0`Q5m:dQ5s2[Q5x2bQ6U2vQ6V:eQ6[:gQ6]:nQ7T4oQ7r5kQ7v5tQ8P:oQ8T:tQ8U:uQ8z7xQ9Y8gQ9a8xQ9r#QR;U;bR#YWR'P!dY!sQ'U-R0y4tS&{!d,yQ'a!qS'k!t!wS'm!x4vS,v&|'TS-b'b'cQ-d'dQ2P-PR2_-cR(o#vR(r#wQ!eQT-Q'U-R]!pQ!q'U-R0y4tQ#n]R'_9qT#iZ%]S#hZ%]S%cm,]U([#f#g#jS-v(](^Q-z(_Q0Q*|Q2d-wU2e-x-y-{S5z2f2gR7y5{`#[W#U#X%`'x(R*y-qr#eZm#f#g#j%](](^(_*|-w-x-y-{2f2g5{Q1`,]Q1v,sQ5i1nQ7q5jT:|&}*zT#_W%`S#^W%`S'y#U(RS(O#X*yS,x&}*zT-l'x-qT'S!d%aQ$jfR)n$oT)c$j)dR3_.oT*S$w*UR*[$zQ0U+UQ2i.SQ4w0{Q6P2mQ7]4zQ7|6OQ8i7[Q8{7{Q9[8kQ9d8}Q9i9]R9l9elqOXs!Y#b%e&h&j&k&m,a,f1f1iQ&b!UR,U&_rmOXs!T!U!Y#b%e&_&h&j&k&m,a,f1f1iR,]&eT%dm,]R0u+uR,T&]Q%{{R+m%|R+c%vT&f!V&iT&g!V&iT1h,f1i",nodeNames:"⚠ ArithOp ArithOp LineComment BlockComment Script ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:366,context:Vi,nodeProps:[["group",-26,6,14,16,62,199,203,207,208,210,213,216,226,228,234,236,238,240,243,249,255,257,259,261,263,265,266,"Statement",-32,10,11,25,28,29,35,45,48,49,51,56,64,72,76,78,80,81,103,104,113,114,131,134,136,137,138,139,141,142,162,163,165,"Expression",-23,24,26,30,34,36,38,166,168,170,171,173,174,175,177,178,179,181,182,183,193,195,197,198,"Type",-3,84,96,102,"ClassItem"],["openedBy",31,"InterpolationStart",50,"[",54,"{",69,"(",143,"JSXStartTag",155,"JSXStartTag JSXStartCloseTag"],["closedBy",33,"InterpolationEnd",44,"]",55,"}",70,")",144,"JSXSelfCloseEndTag JSXEndTag",160,"JSXEndTag"]],propSources:[Wi],skippedNodes:[0,3,4,269],repeatNodeCount:33,tokenData:"$>y(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu>PuvBavwDxwxGgxyMvyz! Qz{!![{|!%O|}!&]}!O!%O!O!P!'g!P!Q!1w!Q!R#0t!R![#3T![!]#@T!]!^#Aa!^!_#Bk!_!`#GS!`!a#In!a!b#N{!b!c$$z!c!}>P!}#O$&U#O#P$'`#P#Q$,w#Q#R$.R#R#S>P#S#T$/`#T#o$0j#o#p$4z#p#q$5p#q#r$7Q#r#s$8^#s$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$I|>P$I|$I}$P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(n%d_$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$d&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$d&j'{!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU'{!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$d&j'xpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU'xpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX'xp'{!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z(CS+rq$d&j'xp'{!b'n(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z(CS.ST'y#S$d&j'o(;dO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c(CS.n_$d&j'xp'{!b'o(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`/x`$d&j!l$Ip'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S1V`#q$Id$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S2d_#q$Id$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$2b3l_'w$(n$d&j'{!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k*r4r_$d&j'{!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k)`5vX$d&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q)`6jT$_#t$d&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#t6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y#t7bO$_#t#t7eP;=`<%l6y)`7kP;=`<%l5q*r7w]$_#t$d&j'{!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}%W8uZ'{!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p%W9oU$_#t'{!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}%W:UP;=`<%l8p*r:[P;=`<%l4k#%|:hg$d&j'xp'{!bOY%ZYZ&cZr%Zrs&}st%Ztu`k$d&j'xp'{!b(V!LY'u&;d$W#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P+d@`k$d&j'xp'{!b$W#tOY%ZYZ&cZr%Zrs&}st%Ztu@Tuw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![@T![!^%Z!^!_*g!_!c%Z!c!}@T!}#O%Z#O#P&c#P#R%Z#R#S@T#S#T%Z#T#o@T#o#p*g#p$g%Z$g;'S@T;'S;=`BT<%lO@T+dBWP;=`<%l@T(CSB^P;=`<%l>P%#SBl`$d&j'xp'{!b#i$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Cn!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#SCy_$d&j#{$Id'xp'{!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%DfETa(k%Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$/l#>fi$d&j'xp'{!bl$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#>Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#b%Z#b#c#5T#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%Gh#@b_!a$b$d&j#y%Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$JT>P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(CS$=Uk$d&j'xp'{!b'o(;d(V!LY'u&;d$W#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P",tokenizers:[_i,Ci,2,3,4,5,6,7,8,9,10,11,12,13,Ri,new te("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOq~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!O~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(U~~",141,327),new te("j~RQYZXz{^~^O'r~~aP!P!Qd~iO's~~",25,309)],topRules:{Script:[0,5],SingleExpression:[1,267],SingleClassItem:[2,268]},dialects:{jsx:12810,ts:12812},dynamicPrecedences:{76:1,78:1,163:1,191:1},specialized:[{term:313,get:O=>qi[O]||-1},{term:329,get:O=>ji[O]||-1},{term:67,get:O=>zi[O]||-1}],tokenPrec:12836}),Ii=[P("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),P("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),P("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),P("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),P("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),P(`try { \${} } catch (\${error}) { \${} diff --git a/ui/dist/assets/ConfirmEmailChangeDocs-29ce6532.js b/ui/dist/assets/ConfirmEmailChangeDocs-b05f9dfe.js similarity index 97% rename from ui/dist/assets/ConfirmEmailChangeDocs-29ce6532.js rename to ui/dist/assets/ConfirmEmailChangeDocs-b05f9dfe.js index 70175ce76..bd036040f 100644 --- a/ui/dist/assets/ConfirmEmailChangeDocs-29ce6532.js +++ b/ui/dist/assets/ConfirmEmailChangeDocs-b05f9dfe.js @@ -1,4 +1,4 @@ -import{S as Ce,i as $e,s as we,e as r,w as g,b as h,c as he,f as b,g as f,h as n,m as ve,x as Y,N as pe,P as Pe,k as Se,Q as Oe,n as Te,t as Z,a as x,o as m,d as ge,T as Re,C as Ee,p as ye,r as j,u as Be,M as qe}from"./index-c3cca8a1.js";import{S as Ae}from"./SdkTabs-4e51916e.js";function ue(o,l,s){const a=o.slice();return a[5]=l[s],a}function be(o,l,s){const a=o.slice();return a[5]=l[s],a}function _e(o,l){let s,a=l[5].code+"",_,u,i,d;function p(){return l[4](l[5])}return{key:o,first:null,c(){s=r("button"),_=g(a),u=h(),b(s,"class","tab-item"),j(s,"active",l[1]===l[5].code),this.first=s},m(C,$){f(C,s,$),n(s,_),n(s,u),i||(d=Be(s,"click",p),i=!0)},p(C,$){l=C,$&4&&a!==(a=l[5].code+"")&&Y(_,a),$&6&&j(s,"active",l[1]===l[5].code)},d(C){C&&m(s),i=!1,d()}}}function ke(o,l){let s,a,_,u;return a=new qe({props:{content:l[5].body}}),{key:o,first:null,c(){s=r("div"),he(a.$$.fragment),_=h(),b(s,"class","tab-item"),j(s,"active",l[1]===l[5].code),this.first=s},m(i,d){f(i,s,d),ve(a,s,null),n(s,_),u=!0},p(i,d){l=i;const p={};d&4&&(p.content=l[5].body),a.$set(p),(!u||d&6)&&j(s,"active",l[1]===l[5].code)},i(i){u||(Z(a.$$.fragment,i),u=!0)},o(i){x(a.$$.fragment,i),u=!1},d(i){i&&m(s),ge(a)}}}function Ue(o){var re,fe;let l,s,a=o[0].name+"",_,u,i,d,p,C,$,D=o[0].name+"",H,ee,F,w,I,T,L,P,M,te,N,R,le,Q,K=o[0].name+"",z,se,G,E,J,y,V,B,X,S,q,v=[],ae=new Map,oe,A,k=[],ne=new Map,O;w=new Ae({props:{js:` +import{S as Ce,i as $e,s as we,e as r,w as g,b as h,c as he,f as b,g as f,h as n,m as ve,x as Y,N as pe,P as Pe,k as Se,Q as Oe,n as Te,t as Z,a as x,o as m,d as ge,T as Re,C as Ee,p as ye,r as j,u as Be,M as qe}from"./index-058d72e8.js";import{S as Ae}from"./SdkTabs-f9f405f6.js";function ue(o,l,s){const a=o.slice();return a[5]=l[s],a}function be(o,l,s){const a=o.slice();return a[5]=l[s],a}function _e(o,l){let s,a=l[5].code+"",_,u,i,d;function p(){return l[4](l[5])}return{key:o,first:null,c(){s=r("button"),_=g(a),u=h(),b(s,"class","tab-item"),j(s,"active",l[1]===l[5].code),this.first=s},m(C,$){f(C,s,$),n(s,_),n(s,u),i||(d=Be(s,"click",p),i=!0)},p(C,$){l=C,$&4&&a!==(a=l[5].code+"")&&Y(_,a),$&6&&j(s,"active",l[1]===l[5].code)},d(C){C&&m(s),i=!1,d()}}}function ke(o,l){let s,a,_,u;return a=new qe({props:{content:l[5].body}}),{key:o,first:null,c(){s=r("div"),he(a.$$.fragment),_=h(),b(s,"class","tab-item"),j(s,"active",l[1]===l[5].code),this.first=s},m(i,d){f(i,s,d),ve(a,s,null),n(s,_),u=!0},p(i,d){l=i;const p={};d&4&&(p.content=l[5].body),a.$set(p),(!u||d&6)&&j(s,"active",l[1]===l[5].code)},i(i){u||(Z(a.$$.fragment,i),u=!0)},o(i){x(a.$$.fragment,i),u=!1},d(i){i&&m(s),ge(a)}}}function Ue(o){var re,fe;let l,s,a=o[0].name+"",_,u,i,d,p,C,$,D=o[0].name+"",H,ee,F,w,I,T,L,P,M,te,N,R,le,Q,K=o[0].name+"",z,se,G,E,J,y,V,B,X,S,q,v=[],ae=new Map,oe,A,k=[],ne=new Map,O;w=new Ae({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${o[3]}'); diff --git a/ui/dist/assets/ConfirmPasswordResetDocs-8e59c578.js b/ui/dist/assets/ConfirmPasswordResetDocs-e4787ad1.js similarity index 98% rename from ui/dist/assets/ConfirmPasswordResetDocs-8e59c578.js rename to ui/dist/assets/ConfirmPasswordResetDocs-e4787ad1.js index 3849b876a..a3dd6ecf1 100644 --- a/ui/dist/assets/ConfirmPasswordResetDocs-8e59c578.js +++ b/ui/dist/assets/ConfirmPasswordResetDocs-e4787ad1.js @@ -1,4 +1,4 @@ -import{S as Se,i as he,s as Re,e as r,w as P,b as v,c as ve,f as b,g as d,h as n,m as we,x as K,N as me,P as Ne,k as Oe,Q as Ce,n as We,t as Z,a as x,o as f,d as Pe,T as $e,C as Ee,p as Te,r as U,u as ge,M as Ae}from"./index-c3cca8a1.js";import{S as De}from"./SdkTabs-4e51916e.js";function ue(o,s,l){const a=o.slice();return a[5]=s[l],a}function be(o,s,l){const a=o.slice();return a[5]=s[l],a}function _e(o,s){let l,a=s[5].code+"",_,u,i,p;function m(){return s[4](s[5])}return{key:o,first:null,c(){l=r("button"),_=P(a),u=v(),b(l,"class","tab-item"),U(l,"active",s[1]===s[5].code),this.first=l},m(S,h){d(S,l,h),n(l,_),n(l,u),i||(p=ge(l,"click",m),i=!0)},p(S,h){s=S,h&4&&a!==(a=s[5].code+"")&&K(_,a),h&6&&U(l,"active",s[1]===s[5].code)},d(S){S&&f(l),i=!1,p()}}}function ke(o,s){let l,a,_,u;return a=new Ae({props:{content:s[5].body}}),{key:o,first:null,c(){l=r("div"),ve(a.$$.fragment),_=v(),b(l,"class","tab-item"),U(l,"active",s[1]===s[5].code),this.first=l},m(i,p){d(i,l,p),we(a,l,null),n(l,_),u=!0},p(i,p){s=i;const m={};p&4&&(m.content=s[5].body),a.$set(m),(!u||p&6)&&U(l,"active",s[1]===s[5].code)},i(i){u||(Z(a.$$.fragment,i),u=!0)},o(i){x(a.$$.fragment,i),u=!1},d(i){i&&f(l),Pe(a)}}}function ye(o){var re,de;let s,l,a=o[0].name+"",_,u,i,p,m,S,h,M=o[0].name+"",j,ee,H,R,L,W,Q,N,q,te,B,$,se,z,F=o[0].name+"",G,le,J,E,V,T,X,g,Y,O,A,w=[],ae=new Map,oe,D,k=[],ne=new Map,C;R=new De({props:{js:` +import{S as Se,i as he,s as Re,e as r,w as P,b as v,c as ve,f as b,g as d,h as n,m as we,x as K,N as me,P as Ne,k as Oe,Q as Ce,n as We,t as Z,a as x,o as f,d as Pe,T as $e,C as Ee,p as Te,r as U,u as ge,M as Ae}from"./index-058d72e8.js";import{S as De}from"./SdkTabs-f9f405f6.js";function ue(o,s,l){const a=o.slice();return a[5]=s[l],a}function be(o,s,l){const a=o.slice();return a[5]=s[l],a}function _e(o,s){let l,a=s[5].code+"",_,u,i,p;function m(){return s[4](s[5])}return{key:o,first:null,c(){l=r("button"),_=P(a),u=v(),b(l,"class","tab-item"),U(l,"active",s[1]===s[5].code),this.first=l},m(S,h){d(S,l,h),n(l,_),n(l,u),i||(p=ge(l,"click",m),i=!0)},p(S,h){s=S,h&4&&a!==(a=s[5].code+"")&&K(_,a),h&6&&U(l,"active",s[1]===s[5].code)},d(S){S&&f(l),i=!1,p()}}}function ke(o,s){let l,a,_,u;return a=new Ae({props:{content:s[5].body}}),{key:o,first:null,c(){l=r("div"),ve(a.$$.fragment),_=v(),b(l,"class","tab-item"),U(l,"active",s[1]===s[5].code),this.first=l},m(i,p){d(i,l,p),we(a,l,null),n(l,_),u=!0},p(i,p){s=i;const m={};p&4&&(m.content=s[5].body),a.$set(m),(!u||p&6)&&U(l,"active",s[1]===s[5].code)},i(i){u||(Z(a.$$.fragment,i),u=!0)},o(i){x(a.$$.fragment,i),u=!1},d(i){i&&f(l),Pe(a)}}}function ye(o){var re,de;let s,l,a=o[0].name+"",_,u,i,p,m,S,h,M=o[0].name+"",j,ee,H,R,L,W,Q,N,q,te,B,$,se,z,F=o[0].name+"",G,le,J,E,V,T,X,g,Y,O,A,w=[],ae=new Map,oe,D,k=[],ne=new Map,C;R=new De({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${o[3]}'); diff --git a/ui/dist/assets/ConfirmVerificationDocs-2e4962d5.js b/ui/dist/assets/ConfirmVerificationDocs-0d4352b6.js similarity index 97% rename from ui/dist/assets/ConfirmVerificationDocs-2e4962d5.js rename to ui/dist/assets/ConfirmVerificationDocs-0d4352b6.js index 650aebff8..b4dc920fd 100644 --- a/ui/dist/assets/ConfirmVerificationDocs-2e4962d5.js +++ b/ui/dist/assets/ConfirmVerificationDocs-0d4352b6.js @@ -1,4 +1,4 @@ -import{S as Pe,i as Te,s as Se,e as r,w,b as k,c as ge,f as b,g as f,h as i,m as ye,x as D,N as _e,P as Be,k as qe,Q as Re,n as Ee,t as Z,a as x,o as p,d as Ce,T as Me,C as Ne,p as Oe,r as H,u as Ve,M as Ke}from"./index-c3cca8a1.js";import{S as Ae}from"./SdkTabs-4e51916e.js";function ke(a,l,s){const o=a.slice();return o[5]=l[s],o}function ve(a,l,s){const o=a.slice();return o[5]=l[s],o}function we(a,l){let s,o=l[5].code+"",h,d,n,u;function m(){return l[4](l[5])}return{key:a,first:null,c(){s=r("button"),h=w(o),d=k(),b(s,"class","tab-item"),H(s,"active",l[1]===l[5].code),this.first=s},m($,g){f($,s,g),i(s,h),i(s,d),n||(u=Ve(s,"click",m),n=!0)},p($,g){l=$,g&4&&o!==(o=l[5].code+"")&&D(h,o),g&6&&H(s,"active",l[1]===l[5].code)},d($){$&&p(s),n=!1,u()}}}function $e(a,l){let s,o,h,d;return o=new Ke({props:{content:l[5].body}}),{key:a,first:null,c(){s=r("div"),ge(o.$$.fragment),h=k(),b(s,"class","tab-item"),H(s,"active",l[1]===l[5].code),this.first=s},m(n,u){f(n,s,u),ye(o,s,null),i(s,h),d=!0},p(n,u){l=n;const m={};u&4&&(m.content=l[5].body),o.$set(m),(!d||u&6)&&H(s,"active",l[1]===l[5].code)},i(n){d||(Z(o.$$.fragment,n),d=!0)},o(n){x(o.$$.fragment,n),d=!1},d(n){n&&p(s),Ce(o)}}}function Ue(a){var re,fe,pe,ue;let l,s,o=a[0].name+"",h,d,n,u,m,$,g,V=a[0].name+"",F,ee,I,y,L,S,Q,C,K,te,A,B,le,z,U=a[0].name+"",G,se,J,q,W,R,X,E,Y,P,M,v=[],oe=new Map,ae,N,_=[],ie=new Map,T;y=new Ae({props:{js:` +import{S as Pe,i as Te,s as Se,e as r,w,b as k,c as ge,f as b,g as f,h as i,m as ye,x as D,N as _e,P as Be,k as qe,Q as Re,n as Ee,t as Z,a as x,o as p,d as Ce,T as Me,C as Ne,p as Oe,r as H,u as Ve,M as Ke}from"./index-058d72e8.js";import{S as Ae}from"./SdkTabs-f9f405f6.js";function ke(a,l,s){const o=a.slice();return o[5]=l[s],o}function ve(a,l,s){const o=a.slice();return o[5]=l[s],o}function we(a,l){let s,o=l[5].code+"",h,d,n,u;function m(){return l[4](l[5])}return{key:a,first:null,c(){s=r("button"),h=w(o),d=k(),b(s,"class","tab-item"),H(s,"active",l[1]===l[5].code),this.first=s},m($,g){f($,s,g),i(s,h),i(s,d),n||(u=Ve(s,"click",m),n=!0)},p($,g){l=$,g&4&&o!==(o=l[5].code+"")&&D(h,o),g&6&&H(s,"active",l[1]===l[5].code)},d($){$&&p(s),n=!1,u()}}}function $e(a,l){let s,o,h,d;return o=new Ke({props:{content:l[5].body}}),{key:a,first:null,c(){s=r("div"),ge(o.$$.fragment),h=k(),b(s,"class","tab-item"),H(s,"active",l[1]===l[5].code),this.first=s},m(n,u){f(n,s,u),ye(o,s,null),i(s,h),d=!0},p(n,u){l=n;const m={};u&4&&(m.content=l[5].body),o.$set(m),(!d||u&6)&&H(s,"active",l[1]===l[5].code)},i(n){d||(Z(o.$$.fragment,n),d=!0)},o(n){x(o.$$.fragment,n),d=!1},d(n){n&&p(s),Ce(o)}}}function Ue(a){var re,fe,pe,ue;let l,s,o=a[0].name+"",h,d,n,u,m,$,g,V=a[0].name+"",F,ee,I,y,L,S,Q,C,K,te,A,B,le,z,U=a[0].name+"",G,se,J,q,W,R,X,E,Y,P,M,v=[],oe=new Map,ae,N,_=[],ie=new Map,T;y=new Ae({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${a[3]}'); diff --git a/ui/dist/assets/CreateApiDocs-e5d40084.js b/ui/dist/assets/CreateApiDocs-87b171bc.js similarity index 98% rename from ui/dist/assets/CreateApiDocs-e5d40084.js rename to ui/dist/assets/CreateApiDocs-87b171bc.js index ef5c64d07..bc87b0ac4 100644 --- a/ui/dist/assets/CreateApiDocs-e5d40084.js +++ b/ui/dist/assets/CreateApiDocs-87b171bc.js @@ -1,4 +1,4 @@ -import{S as Pt,i as gt,s as Ft,C as Q,M as Lt,e as a,w as k,b as m,c as be,f as h,g as r,h as n,m as _e,x,N as Be,P as $t,k as Bt,Q as Rt,n as jt,t as fe,a as pe,o as d,d as ke,T as Dt,p as Nt,r as ye,u as Vt,y as ne}from"./index-c3cca8a1.js";import{S as Jt}from"./SdkTabs-4e51916e.js";import{F as Et}from"./FieldsQueryParam-7f27fd99.js";function Ct(o,e,l){const s=o.slice();return s[7]=e[l],s}function St(o,e,l){const s=o.slice();return s[7]=e[l],s}function Tt(o,e,l){const s=o.slice();return s[12]=e[l],s}function qt(o){let e;return{c(){e=a("p"),e.innerHTML="Requires admin Authorization:TOKEN header",h(e,"class","txt-hint txt-sm txt-right")},m(l,s){r(l,e,s)},d(l){l&&d(e)}}}function Mt(o){let e,l,s,b,p,c,f,v,T,w,M,R,D,E,L,I,j,B,C,N,q,$,_;function O(u,S){var ee,K;return(K=(ee=u[0])==null?void 0:ee.options)!=null&&K.requireEmail?Ut:It}let z=O(o),P=z(o);return{c(){e=a("tr"),e.innerHTML='Auth fields',l=m(),s=a("tr"),s.innerHTML=`
Optional +import{S as Pt,i as gt,s as Ft,C as Q,M as Lt,e as a,w as k,b as m,c as be,f as h,g as r,h as n,m as _e,x,N as Be,P as $t,k as Bt,Q as Rt,n as jt,t as fe,a as pe,o as d,d as ke,T as Dt,p as Nt,r as ye,u as Vt,y as ne}from"./index-058d72e8.js";import{S as Jt}from"./SdkTabs-f9f405f6.js";import{F as Et}from"./FieldsQueryParam-2bcd23bc.js";function Ct(o,e,l){const s=o.slice();return s[7]=e[l],s}function St(o,e,l){const s=o.slice();return s[7]=e[l],s}function Tt(o,e,l){const s=o.slice();return s[12]=e[l],s}function qt(o){let e;return{c(){e=a("p"),e.innerHTML="Requires admin Authorization:TOKEN header",h(e,"class","txt-hint txt-sm txt-right")},m(l,s){r(l,e,s)},d(l){l&&d(e)}}}function Mt(o){let e,l,s,b,p,c,f,v,T,w,M,R,D,E,L,I,j,B,C,N,q,$,_;function O(u,S){var ee,K;return(K=(ee=u[0])==null?void 0:ee.options)!=null&&K.requireEmail?Ut:It}let z=O(o),P=z(o);return{c(){e=a("tr"),e.innerHTML='Auth fields',l=m(),s=a("tr"),s.innerHTML=`
Optional username
String The username of the auth record. diff --git a/ui/dist/assets/DeleteApiDocs-7b87e0c6.js b/ui/dist/assets/DeleteApiDocs-21b64d9e.js similarity index 97% rename from ui/dist/assets/DeleteApiDocs-7b87e0c6.js rename to ui/dist/assets/DeleteApiDocs-21b64d9e.js index 79f98a5ce..2d55a7f66 100644 --- a/ui/dist/assets/DeleteApiDocs-7b87e0c6.js +++ b/ui/dist/assets/DeleteApiDocs-21b64d9e.js @@ -1,4 +1,4 @@ -import{S as Ce,i as Re,s as Pe,e as c,w as $,b as h,c as $e,f as m,g as f,h as n,m as we,x,N as _e,P as Ee,k as Te,Q as Be,n as Oe,t as ee,a as te,o as u,d as ge,T as Ie,C as Me,p as Ae,r as N,u as Se,M as qe}from"./index-c3cca8a1.js";import{S as He}from"./SdkTabs-4e51916e.js";function ke(o,l,s){const a=o.slice();return a[6]=l[s],a}function he(o,l,s){const a=o.slice();return a[6]=l[s],a}function ve(o){let l;return{c(){l=c("p"),l.innerHTML="Requires admin Authorization:TOKEN header",m(l,"class","txt-hint txt-sm txt-right")},m(s,a){f(s,l,a)},d(s){s&&u(l)}}}function ye(o,l){let s,a=l[6].code+"",v,i,r,p;function w(){return l[5](l[6])}return{key:o,first:null,c(){s=c("button"),v=$(a),i=h(),m(s,"class","tab-item"),N(s,"active",l[2]===l[6].code),this.first=s},m(b,g){f(b,s,g),n(s,v),n(s,i),r||(p=Se(s,"click",w),r=!0)},p(b,g){l=b,g&20&&N(s,"active",l[2]===l[6].code)},d(b){b&&u(s),r=!1,p()}}}function De(o,l){let s,a,v,i;return a=new qe({props:{content:l[6].body}}),{key:o,first:null,c(){s=c("div"),$e(a.$$.fragment),v=h(),m(s,"class","tab-item"),N(s,"active",l[2]===l[6].code),this.first=s},m(r,p){f(r,s,p),we(a,s,null),n(s,v),i=!0},p(r,p){l=r,(!i||p&20)&&N(s,"active",l[2]===l[6].code)},i(r){i||(ee(a.$$.fragment,r),i=!0)},o(r){te(a.$$.fragment,r),i=!1},d(r){r&&u(s),ge(a)}}}function Le(o){var ue,pe;let l,s,a=o[0].name+"",v,i,r,p,w,b,g,q=o[0].name+"",z,le,F,C,K,T,Q,y,H,se,L,E,oe,G,U=o[0].name+"",J,ae,V,ne,W,B,X,O,Y,I,Z,R,M,D=[],ie=new Map,re,A,_=[],ce=new Map,P;C=new He({props:{js:` +import{S as Ce,i as Re,s as Pe,e as c,w as $,b as h,c as $e,f as m,g as f,h as n,m as we,x,N as _e,P as Ee,k as Te,Q as Be,n as Oe,t as ee,a as te,o as u,d as ge,T as Ie,C as Me,p as Ae,r as N,u as Se,M as qe}from"./index-058d72e8.js";import{S as He}from"./SdkTabs-f9f405f6.js";function ke(o,l,s){const a=o.slice();return a[6]=l[s],a}function he(o,l,s){const a=o.slice();return a[6]=l[s],a}function ve(o){let l;return{c(){l=c("p"),l.innerHTML="Requires admin Authorization:TOKEN header",m(l,"class","txt-hint txt-sm txt-right")},m(s,a){f(s,l,a)},d(s){s&&u(l)}}}function ye(o,l){let s,a=l[6].code+"",v,i,r,p;function w(){return l[5](l[6])}return{key:o,first:null,c(){s=c("button"),v=$(a),i=h(),m(s,"class","tab-item"),N(s,"active",l[2]===l[6].code),this.first=s},m(b,g){f(b,s,g),n(s,v),n(s,i),r||(p=Se(s,"click",w),r=!0)},p(b,g){l=b,g&20&&N(s,"active",l[2]===l[6].code)},d(b){b&&u(s),r=!1,p()}}}function De(o,l){let s,a,v,i;return a=new qe({props:{content:l[6].body}}),{key:o,first:null,c(){s=c("div"),$e(a.$$.fragment),v=h(),m(s,"class","tab-item"),N(s,"active",l[2]===l[6].code),this.first=s},m(r,p){f(r,s,p),we(a,s,null),n(s,v),i=!0},p(r,p){l=r,(!i||p&20)&&N(s,"active",l[2]===l[6].code)},i(r){i||(ee(a.$$.fragment,r),i=!0)},o(r){te(a.$$.fragment,r),i=!1},d(r){r&&u(s),ge(a)}}}function Le(o){var ue,pe;let l,s,a=o[0].name+"",v,i,r,p,w,b,g,q=o[0].name+"",z,le,F,C,K,T,Q,y,H,se,L,E,oe,G,U=o[0].name+"",J,ae,V,ne,W,B,X,O,Y,I,Z,R,M,D=[],ie=new Map,re,A,_=[],ce=new Map,P;C=new He({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${o[3]}'); diff --git a/ui/dist/assets/FieldsQueryParam-7f27fd99.js b/ui/dist/assets/FieldsQueryParam-2bcd23bc.js similarity index 88% rename from ui/dist/assets/FieldsQueryParam-7f27fd99.js rename to ui/dist/assets/FieldsQueryParam-2bcd23bc.js index ab7e39c90..73c859395 100644 --- a/ui/dist/assets/FieldsQueryParam-7f27fd99.js +++ b/ui/dist/assets/FieldsQueryParam-2bcd23bc.js @@ -1,4 +1,4 @@ -import{S as d,i as n,s as i,e as l,g as o,y as s,o as p}from"./index-c3cca8a1.js";function c(a){let e;return{c(){e=l("tr"),e.innerHTML=`fields +import{S as d,i as n,s as i,e as l,g as o,y as s,o as p}from"./index-058d72e8.js";function c(a){let e;return{c(){e=l("tr"),e.innerHTML=`fields String Comma separated string of the fields to return in the JSON response (by default returns all fields). For example: diff --git a/ui/dist/assets/FilterAutocompleteInput-7de16238.js b/ui/dist/assets/FilterAutocompleteInput-ce40744a.js similarity index 99% rename from ui/dist/assets/FilterAutocompleteInput-7de16238.js rename to ui/dist/assets/FilterAutocompleteInput-ce40744a.js index 070ff0675..0aa1aa502 100644 --- a/ui/dist/assets/FilterAutocompleteInput-7de16238.js +++ b/ui/dist/assets/FilterAutocompleteInput-ce40744a.js @@ -1 +1 @@ -import{S as oe,i as ae,s as le,e as ue,f as ce,g as fe,y as H,o as de,I as he,J as ge,K as pe,H as ye,C as q,L as me}from"./index-c3cca8a1.js";import{E as S,a as w,h as be,b as ke,c as xe,d as Ke,e as Ce,s as qe,f as Se,g as we,r as Le,i as Ie,k as Ee,j as Re,l as Ae,m as Be,n as Oe,o as _e,p as ve,q as Y,C as E,S as He,t as De}from"./index-fd4289fb.js";function Me(e){Z(e,"start");var i={},n=e.languageData||{},g=!1;for(var p in e)if(p!=n&&e.hasOwnProperty(p))for(var d=i[p]=[],o=e[p],s=0;s2&&o.token&&typeof o.token!="string"){n.pending=[];for(var a=2;a-1)return null;var p=n.indent.length-1,d=e[n.state];e:for(;;){for(var o=0;on(21,g=t));const p=pe();let{id:d=""}=i,{value:o=""}=i,{disabled:s=!1}=i,{placeholder:l=""}=i,{baseCollection:a=null}=i,{singleLine:b=!1}=i,{extraAutocompleteKeys:R=[]}=i,{disableRequestKeys:x=!1}=i,{disableIndirectCollectionsKeys:K=!1}=i,f,k,A=s,D=new E,M=new E,F=new E,T=new E,L=[],U=[],W=[],N=[],I="",B="";function O(){f==null||f.focus()}let _=null;function j(){clearTimeout(_),_=setTimeout(()=>{L=$(g),N=ee(),U=x?[]:te(),W=K?[]:ne()},300)}function $(t){let r=t.slice();return a&&q.pushOrReplaceByKey(r,a,"id"),r}function J(){k==null||k.dispatchEvent(new CustomEvent("change",{detail:{value:o},bubbles:!0}))}function P(){if(!d)return;const t=document.querySelectorAll('[for="'+d+'"]');for(let r of t)r.removeEventListener("click",O)}function V(){if(!d)return;P();const t=document.querySelectorAll('[for="'+d+'"]');for(let r of t)r.addEventListener("click",O)}function C(t,r="",c=0){var m,z,Q;let h=L.find(y=>y.name==t||y.id==t);if(!h||c>=4)return[];let u=q.getAllCollectionIdentifiers(h,r);for(const y of h.schema){const v=r+y.name;if(y.type==="relation"&&((m=y.options)!=null&&m.collectionId)){const X=C(y.options.collectionId,v+".",c+1);X.length&&(u=u.concat(X))}y.type==="select"&&((z=y.options)==null?void 0:z.maxSelect)!=1&&u.push(v+":each"),((Q=y.options)==null?void 0:Q.maxSelect)!=1&&["select","file","relation"].includes(y.type)&&u.push(v+":length")}return u}function ee(){return C(a==null?void 0:a.name)}function te(){const t=[];t.push("@request.method"),t.push("@request.query."),t.push("@request.data."),t.push("@request.headers."),t.push("@request.auth.id"),t.push("@request.auth.collectionId"),t.push("@request.auth.collectionName"),t.push("@request.auth.verified"),t.push("@request.auth.username"),t.push("@request.auth.email"),t.push("@request.auth.emailVisibility"),t.push("@request.auth.created"),t.push("@request.auth.updated");const r=L.filter(h=>h.$isAuth);for(const h of r){const u=C(h.id,"@request.auth.");for(const m of u)q.pushUnique(t,m)}const c=["created","updated"];if(a!=null&&a.id){const h=C(a.name,"@request.data.");for(const u of h){t.push(u);const m=u.split(".");m.length===3&&m[2].indexOf(":")===-1&&!c.includes(m[2])&&t.push(u+":isset")}}return t}function ne(){const t=[];for(const r of L){const c="@collection."+r.name+".",h=C(r.name,c);for(const u of h)t.push(u)}return t}function ie(t=!0,r=!0){let c=[].concat(R);return c=c.concat(N||[]),t&&(c=c.concat(U||[])),r&&(c=c.concat(W||[])),c.sort(function(h,u){return u.length-h.length}),c}function se(t){let r=t.matchBefore(/[\'\"\@\w\.]*/);if(r&&r.from==r.to&&!t.explicit)return null;let c=[{label:"false"},{label:"true"},{label:"@now"}];K||c.push({label:"@collection.*",apply:"@collection."});const h=ie(!x,!x&&r.text.startsWith("@c"));for(const u of h)c.push({label:u.endsWith(".")?u+"*":u,apply:u});return{from:r.from,options:c}}function G(){return He.define(Me({start:[{regex:/true|false|null/,token:"atom"},{regex:/"(?:[^\\]|\\.)*?(?:"|$)/,token:"string"},{regex:/'(?:[^\\]|\\.)*?(?:'|$)/,token:"string"},{regex:/0x[a-f\d]+|[-+]?(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i,token:"number"},{regex:/\&\&|\|\||\=|\!\=|\~|\!\~|\>|\<|\>\=|\<\=/,token:"operator"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0},{regex:/\w+[\w\.]*\w+/,token:"keyword"},{regex:q.escapeRegExp("@now"),token:"keyword"},{regex:q.escapeRegExp("@request.method"),token:"keyword"}]}))}ye(()=>{const t={key:"Enter",run:r=>{b&&p("submit",o)}};return V(),n(11,f=new S({parent:k,state:w.create({doc:o,extensions:[be(),ke(),xe(),Ke(),Ce(),w.allowMultipleSelections.of(!0),qe(De,{fallback:!0}),Se(),we(),Le(),Ie(),Ee.of([t,...Re,...Ae,Be.find(r=>r.key==="Mod-d"),...Oe,..._e]),S.lineWrapping,ve({override:[se],icons:!1}),T.of(Y(l)),M.of(S.editable.of(!s)),F.of(w.readOnly.of(s)),D.of(G()),w.transactionFilter.of(r=>b&&r.newDoc.lines>1?[]:r),S.updateListener.of(r=>{!r.docChanged||s||(n(1,o=r.state.doc.toString()),J())})]})})),()=>{clearTimeout(_),P(),f==null||f.destroy()}});function re(t){me[t?"unshift":"push"](()=>{k=t,n(0,k)})}return e.$$set=t=>{"id"in t&&n(2,d=t.id),"value"in t&&n(1,o=t.value),"disabled"in t&&n(3,s=t.disabled),"placeholder"in t&&n(4,l=t.placeholder),"baseCollection"in t&&n(5,a=t.baseCollection),"singleLine"in t&&n(6,b=t.singleLine),"extraAutocompleteKeys"in t&&n(7,R=t.extraAutocompleteKeys),"disableRequestKeys"in t&&n(8,x=t.disableRequestKeys),"disableIndirectCollectionsKeys"in t&&n(9,K=t.disableIndirectCollectionsKeys)},e.$$.update=()=>{e.$$.dirty[0]&32&&n(13,I=Pe(a)),e.$$.dirty[0]&25352&&!s&&(B!=I||x!==-1||K!==-1)&&(n(14,B=I),j()),e.$$.dirty[0]&4&&d&&V(),e.$$.dirty[0]&2080&&f&&a!=null&&a.schema&&f.dispatch({effects:[D.reconfigure(G())]}),e.$$.dirty[0]&6152&&f&&A!=s&&(f.dispatch({effects:[M.reconfigure(S.editable.of(!s)),F.reconfigure(w.readOnly.of(s))]}),n(12,A=s),J()),e.$$.dirty[0]&2050&&f&&o!=f.state.doc.toString()&&f.dispatch({changes:{from:0,to:f.state.doc.length,insert:o}}),e.$$.dirty[0]&2064&&f&&typeof l<"u"&&f.dispatch({effects:[T.reconfigure(Y(l))]})},[k,o,d,s,l,a,b,R,x,K,O,f,A,I,B,re]}class Qe extends oe{constructor(i){super(),ae(this,i,Ve,Je,le,{id:2,value:1,disabled:3,placeholder:4,baseCollection:5,singleLine:6,extraAutocompleteKeys:7,disableRequestKeys:8,disableIndirectCollectionsKeys:9,focus:10},null,[-1,-1])}get focus(){return this.$$.ctx[10]}}export{Qe as default}; +import{S as oe,i as ae,s as le,e as ue,f as ce,g as fe,y as H,o as de,I as he,J as ge,K as pe,H as ye,C as q,L as me}from"./index-058d72e8.js";import{E as S,a as w,h as be,b as ke,c as xe,d as Ke,e as Ce,s as qe,f as Se,g as we,r as Le,i as Ie,k as Ee,j as Re,l as Ae,m as Be,n as Oe,o as _e,p as ve,q as Y,C as E,S as He,t as De}from"./index-fd4289fb.js";function Me(e){Z(e,"start");var i={},n=e.languageData||{},g=!1;for(var p in e)if(p!=n&&e.hasOwnProperty(p))for(var d=i[p]=[],o=e[p],s=0;s2&&o.token&&typeof o.token!="string"){n.pending=[];for(var a=2;a-1)return null;var p=n.indent.length-1,d=e[n.state];e:for(;;){for(var o=0;on(21,g=t));const p=pe();let{id:d=""}=i,{value:o=""}=i,{disabled:s=!1}=i,{placeholder:l=""}=i,{baseCollection:a=null}=i,{singleLine:b=!1}=i,{extraAutocompleteKeys:R=[]}=i,{disableRequestKeys:x=!1}=i,{disableIndirectCollectionsKeys:K=!1}=i,f,k,A=s,D=new E,M=new E,F=new E,T=new E,L=[],U=[],W=[],N=[],I="",B="";function O(){f==null||f.focus()}let _=null;function j(){clearTimeout(_),_=setTimeout(()=>{L=$(g),N=ee(),U=x?[]:te(),W=K?[]:ne()},300)}function $(t){let r=t.slice();return a&&q.pushOrReplaceByKey(r,a,"id"),r}function J(){k==null||k.dispatchEvent(new CustomEvent("change",{detail:{value:o},bubbles:!0}))}function P(){if(!d)return;const t=document.querySelectorAll('[for="'+d+'"]');for(let r of t)r.removeEventListener("click",O)}function V(){if(!d)return;P();const t=document.querySelectorAll('[for="'+d+'"]');for(let r of t)r.addEventListener("click",O)}function C(t,r="",c=0){var m,z,Q;let h=L.find(y=>y.name==t||y.id==t);if(!h||c>=4)return[];let u=q.getAllCollectionIdentifiers(h,r);for(const y of h.schema){const v=r+y.name;if(y.type==="relation"&&((m=y.options)!=null&&m.collectionId)){const X=C(y.options.collectionId,v+".",c+1);X.length&&(u=u.concat(X))}y.type==="select"&&((z=y.options)==null?void 0:z.maxSelect)!=1&&u.push(v+":each"),((Q=y.options)==null?void 0:Q.maxSelect)!=1&&["select","file","relation"].includes(y.type)&&u.push(v+":length")}return u}function ee(){return C(a==null?void 0:a.name)}function te(){const t=[];t.push("@request.method"),t.push("@request.query."),t.push("@request.data."),t.push("@request.headers."),t.push("@request.auth.id"),t.push("@request.auth.collectionId"),t.push("@request.auth.collectionName"),t.push("@request.auth.verified"),t.push("@request.auth.username"),t.push("@request.auth.email"),t.push("@request.auth.emailVisibility"),t.push("@request.auth.created"),t.push("@request.auth.updated");const r=L.filter(h=>h.$isAuth);for(const h of r){const u=C(h.id,"@request.auth.");for(const m of u)q.pushUnique(t,m)}const c=["created","updated"];if(a!=null&&a.id){const h=C(a.name,"@request.data.");for(const u of h){t.push(u);const m=u.split(".");m.length===3&&m[2].indexOf(":")===-1&&!c.includes(m[2])&&t.push(u+":isset")}}return t}function ne(){const t=[];for(const r of L){const c="@collection."+r.name+".",h=C(r.name,c);for(const u of h)t.push(u)}return t}function ie(t=!0,r=!0){let c=[].concat(R);return c=c.concat(N||[]),t&&(c=c.concat(U||[])),r&&(c=c.concat(W||[])),c.sort(function(h,u){return u.length-h.length}),c}function se(t){let r=t.matchBefore(/[\'\"\@\w\.]*/);if(r&&r.from==r.to&&!t.explicit)return null;let c=[{label:"false"},{label:"true"},{label:"@now"}];K||c.push({label:"@collection.*",apply:"@collection."});const h=ie(!x,!x&&r.text.startsWith("@c"));for(const u of h)c.push({label:u.endsWith(".")?u+"*":u,apply:u});return{from:r.from,options:c}}function G(){return He.define(Me({start:[{regex:/true|false|null/,token:"atom"},{regex:/"(?:[^\\]|\\.)*?(?:"|$)/,token:"string"},{regex:/'(?:[^\\]|\\.)*?(?:'|$)/,token:"string"},{regex:/0x[a-f\d]+|[-+]?(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i,token:"number"},{regex:/\&\&|\|\||\=|\!\=|\~|\!\~|\>|\<|\>\=|\<\=/,token:"operator"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0},{regex:/\w+[\w\.]*\w+/,token:"keyword"},{regex:q.escapeRegExp("@now"),token:"keyword"},{regex:q.escapeRegExp("@request.method"),token:"keyword"}]}))}ye(()=>{const t={key:"Enter",run:r=>{b&&p("submit",o)}};return V(),n(11,f=new S({parent:k,state:w.create({doc:o,extensions:[be(),ke(),xe(),Ke(),Ce(),w.allowMultipleSelections.of(!0),qe(De,{fallback:!0}),Se(),we(),Le(),Ie(),Ee.of([t,...Re,...Ae,Be.find(r=>r.key==="Mod-d"),...Oe,..._e]),S.lineWrapping,ve({override:[se],icons:!1}),T.of(Y(l)),M.of(S.editable.of(!s)),F.of(w.readOnly.of(s)),D.of(G()),w.transactionFilter.of(r=>b&&r.newDoc.lines>1?[]:r),S.updateListener.of(r=>{!r.docChanged||s||(n(1,o=r.state.doc.toString()),J())})]})})),()=>{clearTimeout(_),P(),f==null||f.destroy()}});function re(t){me[t?"unshift":"push"](()=>{k=t,n(0,k)})}return e.$$set=t=>{"id"in t&&n(2,d=t.id),"value"in t&&n(1,o=t.value),"disabled"in t&&n(3,s=t.disabled),"placeholder"in t&&n(4,l=t.placeholder),"baseCollection"in t&&n(5,a=t.baseCollection),"singleLine"in t&&n(6,b=t.singleLine),"extraAutocompleteKeys"in t&&n(7,R=t.extraAutocompleteKeys),"disableRequestKeys"in t&&n(8,x=t.disableRequestKeys),"disableIndirectCollectionsKeys"in t&&n(9,K=t.disableIndirectCollectionsKeys)},e.$$.update=()=>{e.$$.dirty[0]&32&&n(13,I=Pe(a)),e.$$.dirty[0]&25352&&!s&&(B!=I||x!==-1||K!==-1)&&(n(14,B=I),j()),e.$$.dirty[0]&4&&d&&V(),e.$$.dirty[0]&2080&&f&&a!=null&&a.schema&&f.dispatch({effects:[D.reconfigure(G())]}),e.$$.dirty[0]&6152&&f&&A!=s&&(f.dispatch({effects:[M.reconfigure(S.editable.of(!s)),F.reconfigure(w.readOnly.of(s))]}),n(12,A=s),J()),e.$$.dirty[0]&2050&&f&&o!=f.state.doc.toString()&&f.dispatch({changes:{from:0,to:f.state.doc.length,insert:o}}),e.$$.dirty[0]&2064&&f&&typeof l<"u"&&f.dispatch({effects:[T.reconfigure(Y(l))]})},[k,o,d,s,l,a,b,R,x,K,O,f,A,I,B,re]}class Qe extends oe{constructor(i){super(),ae(this,i,Ve,Je,le,{id:2,value:1,disabled:3,placeholder:4,baseCollection:5,singleLine:6,extraAutocompleteKeys:7,disableRequestKeys:8,disableIndirectCollectionsKeys:9,focus:10},null,[-1,-1])}get focus(){return this.$$.ctx[10]}}export{Qe as default}; diff --git a/ui/dist/assets/ListApiDocs-1c34ed35.js b/ui/dist/assets/ListApiDocs-1c34ed35.js deleted file mode 100644 index da2a7a9bf..000000000 --- a/ui/dist/assets/ListApiDocs-1c34ed35.js +++ /dev/null @@ -1,138 +0,0 @@ -import{S as We,i as Xe,s as Ye,e,b as s,E as tl,f as i,g as u,u as Ze,y as Ie,o as m,w,h as t,M as ke,c as Zt,m as te,x as ge,N as Be,P as el,k as ll,Q as sl,n as nl,t as Bt,a as Gt,d as ee,R as ol,T as il,C as $e,p as al,r as ye}from"./index-c3cca8a1.js";import{S as rl}from"./SdkTabs-4e51916e.js";function cl(c){let n,o,a;return{c(){n=e("span"),n.textContent="Show details",o=s(),a=e("i"),i(n,"class","txt"),i(a,"class","ri-arrow-down-s-line")},m(p,b){u(p,n,b),u(p,o,b),u(p,a,b)},d(p){p&&m(n),p&&m(o),p&&m(a)}}}function dl(c){let n,o,a;return{c(){n=e("span"),n.textContent="Hide details",o=s(),a=e("i"),i(n,"class","txt"),i(a,"class","ri-arrow-up-s-line")},m(p,b){u(p,n,b),u(p,o,b),u(p,a,b)},d(p){p&&m(n),p&&m(o),p&&m(a)}}}function Ge(c){let n,o,a,p,b,d,h,g,x,_,f,Z,Ct,Ut,O,jt,H,at,R,tt,le,U,j,se,rt,$t,et,kt,ne,ct,dt,lt,E,Jt,yt,L,st,vt,Qt,Ft,J,nt,Lt,zt,At,T,ft,Tt,oe,pt,ie,D,Pt,ot,Rt,S,ut,ae,Q,St,Kt,Ot,re,N,Vt,z,mt,ce,I,de,B,fe,P,Et,K,bt,pe,ht,ue,$,Nt,it,qt,me,Mt,Wt,V,_t,be,Ht,he,xt,_e,W,wt,Xt,X,Yt,q,gt,y,Dt,xe,Y,A,It,G,v;return{c(){n=e("p"),n.innerHTML=`The syntax basically follows the format - OPERAND - OPERATOR - OPERAND, where:`,o=s(),a=e("ul"),p=e("li"),p.innerHTML=`OPERAND - could be any of the above field literal, string (single - or double quoted), number, null, true, false`,b=s(),d=e("li"),h=e("code"),h.textContent="OPERATOR",g=w(` - is one of: - `),x=e("br"),_=s(),f=e("ul"),Z=e("li"),Ct=e("code"),Ct.textContent="=",Ut=s(),O=e("span"),O.textContent="Equal",jt=s(),H=e("li"),at=e("code"),at.textContent="!=",R=s(),tt=e("span"),tt.textContent="NOT equal",le=s(),U=e("li"),j=e("code"),j.textContent=">",se=s(),rt=e("span"),rt.textContent="Greater than",$t=s(),et=e("li"),kt=e("code"),kt.textContent=">=",ne=s(),ct=e("span"),ct.textContent="Greater than or equal",dt=s(),lt=e("li"),E=e("code"),E.textContent="<",Jt=s(),yt=e("span"),yt.textContent="Less than",L=s(),st=e("li"),vt=e("code"),vt.textContent="<=",Qt=s(),Ft=e("span"),Ft.textContent="Less than or equal",J=s(),nt=e("li"),Lt=e("code"),Lt.textContent="~",zt=s(),At=e("span"),At.textContent=`Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for - wildcard match)`,T=s(),ft=e("li"),Tt=e("code"),Tt.textContent="!~",oe=s(),pt=e("span"),pt.textContent=`NOT Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for - wildcard match)`,ie=s(),D=e("li"),Pt=e("code"),Pt.textContent="?=",ot=s(),Rt=e("em"),Rt.textContent="Any/At least one of",S=s(),ut=e("span"),ut.textContent="Equal",ae=s(),Q=e("li"),St=e("code"),St.textContent="?!=",Kt=s(),Ot=e("em"),Ot.textContent="Any/At least one of",re=s(),N=e("span"),N.textContent="NOT equal",Vt=s(),z=e("li"),mt=e("code"),mt.textContent="?>",ce=s(),I=e("em"),I.textContent="Any/At least one of",de=s(),B=e("span"),B.textContent="Greater than",fe=s(),P=e("li"),Et=e("code"),Et.textContent="?>=",K=s(),bt=e("em"),bt.textContent="Any/At least one of",pe=s(),ht=e("span"),ht.textContent="Greater than or equal",ue=s(),$=e("li"),Nt=e("code"),Nt.textContent="?<",it=s(),qt=e("em"),qt.textContent="Any/At least one of",me=s(),Mt=e("span"),Mt.textContent="Less than",Wt=s(),V=e("li"),_t=e("code"),_t.textContent="?<=",be=s(),Ht=e("em"),Ht.textContent="Any/At least one of",he=s(),xt=e("span"),xt.textContent="Less than or equal",_e=s(),W=e("li"),wt=e("code"),wt.textContent="?~",Xt=s(),X=e("em"),X.textContent="Any/At least one of",Yt=s(),q=e("span"),q.textContent=`Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for - wildcard match)`,gt=s(),y=e("li"),Dt=e("code"),Dt.textContent="?!~",xe=s(),Y=e("em"),Y.textContent="Any/At least one of",A=s(),It=e("span"),It.textContent=`NOT Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for - wildcard match)`,G=s(),v=e("p"),v.innerHTML=`To group and combine several expressions you could use brackets - (...), && (AND) and || (OR) tokens.`,i(h,"class","txt-danger"),i(Ct,"class","filter-op svelte-1w7s5nw"),i(O,"class","txt"),i(at,"class","filter-op svelte-1w7s5nw"),i(tt,"class","txt"),i(j,"class","filter-op svelte-1w7s5nw"),i(rt,"class","txt"),i(kt,"class","filter-op svelte-1w7s5nw"),i(ct,"class","txt"),i(E,"class","filter-op svelte-1w7s5nw"),i(yt,"class","txt"),i(vt,"class","filter-op svelte-1w7s5nw"),i(Ft,"class","txt"),i(Lt,"class","filter-op svelte-1w7s5nw"),i(At,"class","txt"),i(Tt,"class","filter-op svelte-1w7s5nw"),i(pt,"class","txt"),i(Pt,"class","filter-op svelte-1w7s5nw"),i(Rt,"class","txt-hint"),i(ut,"class","txt"),i(St,"class","filter-op svelte-1w7s5nw"),i(Ot,"class","txt-hint"),i(N,"class","txt"),i(mt,"class","filter-op svelte-1w7s5nw"),i(I,"class","txt-hint"),i(B,"class","txt"),i(Et,"class","filter-op svelte-1w7s5nw"),i(bt,"class","txt-hint"),i(ht,"class","txt"),i(Nt,"class","filter-op svelte-1w7s5nw"),i(qt,"class","txt-hint"),i(Mt,"class","txt"),i(_t,"class","filter-op svelte-1w7s5nw"),i(Ht,"class","txt-hint"),i(xt,"class","txt"),i(wt,"class","filter-op svelte-1w7s5nw"),i(X,"class","txt-hint"),i(q,"class","txt"),i(Dt,"class","filter-op svelte-1w7s5nw"),i(Y,"class","txt-hint"),i(It,"class","txt")},m(F,k){u(F,n,k),u(F,o,k),u(F,a,k),t(a,p),t(a,b),t(a,d),t(d,h),t(d,g),t(d,x),t(d,_),t(d,f),t(f,Z),t(Z,Ct),t(Z,Ut),t(Z,O),t(f,jt),t(f,H),t(H,at),t(H,R),t(H,tt),t(f,le),t(f,U),t(U,j),t(U,se),t(U,rt),t(f,$t),t(f,et),t(et,kt),t(et,ne),t(et,ct),t(f,dt),t(f,lt),t(lt,E),t(lt,Jt),t(lt,yt),t(f,L),t(f,st),t(st,vt),t(st,Qt),t(st,Ft),t(f,J),t(f,nt),t(nt,Lt),t(nt,zt),t(nt,At),t(f,T),t(f,ft),t(ft,Tt),t(ft,oe),t(ft,pt),t(f,ie),t(f,D),t(D,Pt),t(D,ot),t(D,Rt),t(D,S),t(D,ut),t(f,ae),t(f,Q),t(Q,St),t(Q,Kt),t(Q,Ot),t(Q,re),t(Q,N),t(f,Vt),t(f,z),t(z,mt),t(z,ce),t(z,I),t(z,de),t(z,B),t(f,fe),t(f,P),t(P,Et),t(P,K),t(P,bt),t(P,pe),t(P,ht),t(f,ue),t(f,$),t($,Nt),t($,it),t($,qt),t($,me),t($,Mt),t(f,Wt),t(f,V),t(V,_t),t(V,be),t(V,Ht),t(V,he),t(V,xt),t(f,_e),t(f,W),t(W,wt),t(W,Xt),t(W,X),t(W,Yt),t(W,q),t(f,gt),t(f,y),t(y,Dt),t(y,xe),t(y,Y),t(y,A),t(y,It),u(F,G,k),u(F,v,k)},d(F){F&&m(n),F&&m(o),F&&m(a),F&&m(G),F&&m(v)}}}function fl(c){let n,o,a,p,b;function d(_,f){return _[0]?dl:cl}let h=d(c),g=h(c),x=c[0]&&Ge();return{c(){n=e("button"),g.c(),o=s(),x&&x.c(),a=tl(),i(n,"class","btn btn-sm btn-secondary m-t-10")},m(_,f){u(_,n,f),g.m(n,null),u(_,o,f),x&&x.m(_,f),u(_,a,f),p||(b=Ze(n,"click",c[1]),p=!0)},p(_,[f]){h!==(h=d(_))&&(g.d(1),g=h(_),g&&(g.c(),g.m(n,null))),_[0]?x||(x=Ge(),x.c(),x.m(a.parentNode,a)):x&&(x.d(1),x=null)},i:Ie,o:Ie,d(_){_&&m(n),g.d(),_&&m(o),x&&x.d(_),_&&m(a),p=!1,b()}}}function pl(c,n,o){let a=!1;function p(){o(0,a=!a)}return[a,p]}class ul extends We{constructor(n){super(),Xe(this,n,pl,fl,Ye,{})}}function Ue(c,n,o){const a=c.slice();return a[7]=n[o],a}function je(c,n,o){const a=c.slice();return a[7]=n[o],a}function Je(c,n,o){const a=c.slice();return a[12]=n[o],a[14]=o,a}function Qe(c){let n;return{c(){n=e("p"),n.innerHTML="Requires admin Authorization:TOKEN header",i(n,"class","txt-hint txt-sm txt-right")},m(o,a){u(o,n,a)},d(o){o&&m(n)}}}function ze(c){let n,o=c[12]+"",a,p=c[14]= "2022-01-01 00:00:00" && someField1 != someField2', - }); - - // you can also fetch all records at once via getFullList - const records = await pb.collection('${(Ae=c[0])==null?void 0:Ae.name}').getFullList({ - sort: '-created', - }); - - // or fetch only the first record that matches the specified filter - const record = await pb.collection('${(Te=c[0])==null?void 0:Te.name}').getFirstListItem('someField="test"', { - expand: 'relField1,relField2.subRelField', - }); - `,dart:` - import 'package:pocketbase/pocketbase.dart'; - - final pb = PocketBase('${c[3]}'); - - ... - - // fetch a paginated records list - final resultList = await pb.collection('${(Pe=c[0])==null?void 0:Pe.name}').getList( - page: 1, - perPage: 50, - filter: 'created >= "2022-01-01 00:00:00" && someField1 != someField2', - ); - - // you can also fetch all records at once via getFullList - final records = await pb.collection('${(Re=c[0])==null?void 0:Re.name}').getFullList( - sort: '-created', - ); - - // or fetch only the first record that matches the specified filter - final record = await pb.collection('${(Se=c[0])==null?void 0:Se.name}').getFirstListItem( - 'someField="test"', - expand: 'relField1,relField2.subRelField', - ); - `}});let v=c[1]&&Qe();ot=new ke({props:{content:` - // DESC by created and ASC by id - ?sort=-created,id - `}});let F=c[4],k=[];for(let l=0;l'2022-01-01') - `}}),P=new ul({}),it=new ke({props:{content:"?expand=relField1,relField2.subRelField"}});let Ce=c[5];const ve=l=>l[7].code;for(let l=0;ll[7].code;for(let l=0;lParam - Type - Description`,yt=s(),L=e("tbody"),st=e("tr"),st.innerHTML=`page - Number - The page (aka. offset) of the paginated list (default to 1).`,vt=s(),Qt=e("tr"),Qt.innerHTML=`perPage - Number - Specify the max returned records per page (default to 30).`,Ft=s(),J=e("tr"),nt=e("td"),nt.textContent="sort",Lt=s(),zt=e("td"),zt.innerHTML='String',At=s(),T=e("td"),ft=w("Specify the records order attribute(s). "),Tt=e("br"),oe=w(` - Add `),pt=e("code"),pt.textContent="-",ie=w(" / "),D=e("code"),D.textContent="+",Pt=w(` (default) in front of the attribute for DESC / ASC order. - Ex.: - `),Zt(ot.$$.fragment),Rt=s(),S=e("p"),ut=e("strong"),ut.textContent="Supported record sort fields:",ae=s(),Q=e("br"),St=s(),Kt=e("code"),Kt.textContent="@random",Ot=w(`, - `);for(let l=0;lString',ce=s(),I=e("td"),de=w(`Filter the returned records. Ex.: - `),Zt(B.$$.fragment),fe=s(),Zt(P.$$.fragment),Et=s(),K=e("tr"),bt=e("td"),bt.textContent="expand",pe=s(),ht=e("td"),ht.innerHTML='String',ue=s(),$=e("td"),Nt=w(`Auto expand record relations. Ex.: - `),Zt(it.$$.fragment),qt=w(` - Supports up to 6-levels depth nested relations expansion. `),me=e("br"),Mt=w(` - The expanded relations will be appended to each individual record under the - `),Wt=e("code"),Wt.textContent="expand",V=w(" property (eg. "),_t=e("code"),_t.textContent='"expand": {"relField1": {...}, ...}',be=w(`). - `),Ht=e("br"),he=w(` - Only the relations to which the request user has permissions to `),xt=e("strong"),xt.textContent="view",_e=w(" will be expanded."),W=s(),wt=e("tr"),wt.innerHTML=`fields - String - Comma separated string of the fields to return in the JSON response - (by default returns all fields).`,Xt=s(),X=e("div"),X.textContent="Responses",Yt=s(),q=e("div"),gt=e("div");for(let l=0;l= "2022-01-01 00:00:00" && someField1 != someField2', - }); - - // you can also fetch all records at once via getFullList - const records = await pb.collection('${(Ee=l[0])==null?void 0:Ee.name}').getFullList({ - sort: '-created', - }); - - // or fetch only the first record that matches the specified filter - const record = await pb.collection('${(Ne=l[0])==null?void 0:Ne.name}').getFirstListItem('someField="test"', { - expand: 'relField1,relField2.subRelField', - }); - `),r&9&&(C.dart=` - import 'package:pocketbase/pocketbase.dart'; - - final pb = PocketBase('${l[3]}'); - - ... - - // fetch a paginated records list - final resultList = await pb.collection('${(qe=l[0])==null?void 0:qe.name}').getList( - page: 1, - perPage: 50, - filter: 'created >= "2022-01-01 00:00:00" && someField1 != someField2', - ); - - // you can also fetch all records at once via getFullList - final records = await pb.collection('${(Me=l[0])==null?void 0:Me.name}').getFullList( - sort: '-created', - ); - - // or fetch only the first record that matches the specified filter - final record = await pb.collection('${(He=l[0])==null?void 0:He.name}').getFirstListItem( - 'someField="test"', - expand: 'relField1,relField2.subRelField', - ); - `),O.$set(C),(!G||r&1)&&$t!==($t=l[0].name+"")&&ge(et,$t),l[1]?v||(v=Qe(),v.c(),v.m(R,null)):v&&(v.d(1),v=null),r&16){F=l[4];let M;for(M=0;Mo(2,h=_.code);return c.$$set=_=>{"collection"in _&&o(0,d=_.collection)},c.$$.update=()=>{c.$$.dirty&1&&o(4,a=$e.getAllCollectionIdentifiers(d)),c.$$.dirty&1&&o(1,p=(d==null?void 0:d.listRule)===null),c.$$.dirty&3&&d!=null&&d.id&&(g.push({code:200,body:JSON.stringify({page:1,perPage:30,totalPages:1,totalItems:2,items:[$e.dummyCollectionRecord(d),$e.dummyCollectionRecord(d)]},null,2)}),g.push({code:400,body:` - { - "code": 400, - "message": "Something went wrong while processing your request. Invalid filter.", - "data": {} - } - `}),p&&g.push({code:403,body:` - { - "code": 403, - "message": "Only admins can access this action.", - "data": {} - } - `}))},o(3,b=$e.getApiExampleUrl(al.baseUrl)),[d,p,h,b,a,g,x]}class xl extends We{constructor(n){super(),Xe(this,n,bl,ml,Ye,{collection:0})}}export{xl as default}; diff --git a/ui/dist/assets/ListApiDocs-79051d7c.js b/ui/dist/assets/ListApiDocs-79051d7c.js new file mode 100644 index 000000000..3a50df2fb --- /dev/null +++ b/ui/dist/assets/ListApiDocs-79051d7c.js @@ -0,0 +1,149 @@ +import{S as Ye,i as Ze,s as tl,e,b as s,E as ll,f as i,g as u,u as el,y as Ge,o as m,w as x,h as t,M as ve,c as te,m as ee,x as $e,N as Ue,P as sl,k as nl,Q as ol,n as il,t as Bt,a as Gt,d as le,R as al,T as rl,C as ye,p as cl,r as Fe}from"./index-058d72e8.js";import{S as dl}from"./SdkTabs-f9f405f6.js";function fl(c){let n,o,a;return{c(){n=e("span"),n.textContent="Show details",o=s(),a=e("i"),i(n,"class","txt"),i(a,"class","ri-arrow-down-s-line")},m(p,b){u(p,n,b),u(p,o,b),u(p,a,b)},d(p){p&&m(n),p&&m(o),p&&m(a)}}}function pl(c){let n,o,a;return{c(){n=e("span"),n.textContent="Hide details",o=s(),a=e("i"),i(n,"class","txt"),i(a,"class","ri-arrow-up-s-line")},m(p,b){u(p,n,b),u(p,o,b),u(p,a,b)},d(p){p&&m(n),p&&m(o),p&&m(a)}}}function je(c){let n,o,a,p,b,d,h,g,w,_,f,Z,Ct,Ut,E,jt,H,at,S,tt,se,G,U,ne,rt,$t,et,kt,oe,ct,dt,lt,N,zt,yt,v,st,vt,Jt,Ft,j,nt,Lt,Kt,At,L,ft,Tt,ie,pt,ae,D,Pt,ot,St,R,ut,re,z,Rt,Qt,Ot,ce,q,Vt,J,mt,de,I,fe,B,pe,P,Et,K,bt,ue,ht,me,$,Nt,it,qt,be,Mt,Wt,Q,_t,he,Ht,_e,wt,we,V,xt,xe,gt,Xt,W,Yt,A,X,O,Dt,ge,Y,F,It;return{c(){n=e("p"),n.innerHTML=`The syntax basically follows the format + OPERAND + OPERATOR + OPERAND, where:`,o=s(),a=e("ul"),p=e("li"),p.innerHTML=`OPERAND - could be any of the above field literal, string (single + or double quoted), number, null, true, false`,b=s(),d=e("li"),h=e("code"),h.textContent="OPERATOR",g=x(` - is one of: + `),w=e("br"),_=s(),f=e("ul"),Z=e("li"),Ct=e("code"),Ct.textContent="=",Ut=s(),E=e("span"),E.textContent="Equal",jt=s(),H=e("li"),at=e("code"),at.textContent="!=",S=s(),tt=e("span"),tt.textContent="NOT equal",se=s(),G=e("li"),U=e("code"),U.textContent=">",ne=s(),rt=e("span"),rt.textContent="Greater than",$t=s(),et=e("li"),kt=e("code"),kt.textContent=">=",oe=s(),ct=e("span"),ct.textContent="Greater than or equal",dt=s(),lt=e("li"),N=e("code"),N.textContent="<",zt=s(),yt=e("span"),yt.textContent="Less than",v=s(),st=e("li"),vt=e("code"),vt.textContent="<=",Jt=s(),Ft=e("span"),Ft.textContent="Less than or equal",j=s(),nt=e("li"),Lt=e("code"),Lt.textContent="~",Kt=s(),At=e("span"),At.textContent=`Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for + wildcard match)`,L=s(),ft=e("li"),Tt=e("code"),Tt.textContent="!~",ie=s(),pt=e("span"),pt.textContent=`NOT Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for + wildcard match)`,ae=s(),D=e("li"),Pt=e("code"),Pt.textContent="?=",ot=s(),St=e("em"),St.textContent="Any/At least one of",R=s(),ut=e("span"),ut.textContent="Equal",re=s(),z=e("li"),Rt=e("code"),Rt.textContent="?!=",Qt=s(),Ot=e("em"),Ot.textContent="Any/At least one of",ce=s(),q=e("span"),q.textContent="NOT equal",Vt=s(),J=e("li"),mt=e("code"),mt.textContent="?>",de=s(),I=e("em"),I.textContent="Any/At least one of",fe=s(),B=e("span"),B.textContent="Greater than",pe=s(),P=e("li"),Et=e("code"),Et.textContent="?>=",K=s(),bt=e("em"),bt.textContent="Any/At least one of",ue=s(),ht=e("span"),ht.textContent="Greater than or equal",me=s(),$=e("li"),Nt=e("code"),Nt.textContent="?<",it=s(),qt=e("em"),qt.textContent="Any/At least one of",be=s(),Mt=e("span"),Mt.textContent="Less than",Wt=s(),Q=e("li"),_t=e("code"),_t.textContent="?<=",he=s(),Ht=e("em"),Ht.textContent="Any/At least one of",_e=s(),wt=e("span"),wt.textContent="Less than or equal",we=s(),V=e("li"),xt=e("code"),xt.textContent="?~",xe=s(),gt=e("em"),gt.textContent="Any/At least one of",Xt=s(),W=e("span"),W.textContent=`Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for + wildcard match)`,Yt=s(),A=e("li"),X=e("code"),X.textContent="?!~",O=s(),Dt=e("em"),Dt.textContent="Any/At least one of",ge=s(),Y=e("span"),Y.textContent=`NOT Like/Contains (if not specified auto wraps the right string OPERAND in a "%" for + wildcard match)`,F=s(),It=e("p"),It.innerHTML=`To group and combine several expressions you could use brackets + (...), && (AND) and || (OR) tokens.`,i(h,"class","txt-danger"),i(Ct,"class","filter-op svelte-1w7s5nw"),i(E,"class","txt"),i(at,"class","filter-op svelte-1w7s5nw"),i(tt,"class","txt"),i(U,"class","filter-op svelte-1w7s5nw"),i(rt,"class","txt"),i(kt,"class","filter-op svelte-1w7s5nw"),i(ct,"class","txt"),i(N,"class","filter-op svelte-1w7s5nw"),i(yt,"class","txt"),i(vt,"class","filter-op svelte-1w7s5nw"),i(Ft,"class","txt"),i(Lt,"class","filter-op svelte-1w7s5nw"),i(At,"class","txt"),i(Tt,"class","filter-op svelte-1w7s5nw"),i(pt,"class","txt"),i(Pt,"class","filter-op svelte-1w7s5nw"),i(St,"class","txt-hint"),i(ut,"class","txt"),i(Rt,"class","filter-op svelte-1w7s5nw"),i(Ot,"class","txt-hint"),i(q,"class","txt"),i(mt,"class","filter-op svelte-1w7s5nw"),i(I,"class","txt-hint"),i(B,"class","txt"),i(Et,"class","filter-op svelte-1w7s5nw"),i(bt,"class","txt-hint"),i(ht,"class","txt"),i(Nt,"class","filter-op svelte-1w7s5nw"),i(qt,"class","txt-hint"),i(Mt,"class","txt"),i(_t,"class","filter-op svelte-1w7s5nw"),i(Ht,"class","txt-hint"),i(wt,"class","txt"),i(xt,"class","filter-op svelte-1w7s5nw"),i(gt,"class","txt-hint"),i(W,"class","txt"),i(X,"class","filter-op svelte-1w7s5nw"),i(Dt,"class","txt-hint"),i(Y,"class","txt")},m(k,y){u(k,n,y),u(k,o,y),u(k,a,y),t(a,p),t(a,b),t(a,d),t(d,h),t(d,g),t(d,w),t(d,_),t(d,f),t(f,Z),t(Z,Ct),t(Z,Ut),t(Z,E),t(f,jt),t(f,H),t(H,at),t(H,S),t(H,tt),t(f,se),t(f,G),t(G,U),t(G,ne),t(G,rt),t(f,$t),t(f,et),t(et,kt),t(et,oe),t(et,ct),t(f,dt),t(f,lt),t(lt,N),t(lt,zt),t(lt,yt),t(f,v),t(f,st),t(st,vt),t(st,Jt),t(st,Ft),t(f,j),t(f,nt),t(nt,Lt),t(nt,Kt),t(nt,At),t(f,L),t(f,ft),t(ft,Tt),t(ft,ie),t(ft,pt),t(f,ae),t(f,D),t(D,Pt),t(D,ot),t(D,St),t(D,R),t(D,ut),t(f,re),t(f,z),t(z,Rt),t(z,Qt),t(z,Ot),t(z,ce),t(z,q),t(f,Vt),t(f,J),t(J,mt),t(J,de),t(J,I),t(J,fe),t(J,B),t(f,pe),t(f,P),t(P,Et),t(P,K),t(P,bt),t(P,ue),t(P,ht),t(f,me),t(f,$),t($,Nt),t($,it),t($,qt),t($,be),t($,Mt),t(f,Wt),t(f,Q),t(Q,_t),t(Q,he),t(Q,Ht),t(Q,_e),t(Q,wt),t(f,we),t(f,V),t(V,xt),t(V,xe),t(V,gt),t(V,Xt),t(V,W),t(f,Yt),t(f,A),t(A,X),t(A,O),t(A,Dt),t(A,ge),t(A,Y),u(k,F,y),u(k,It,y)},d(k){k&&m(n),k&&m(o),k&&m(a),k&&m(F),k&&m(It)}}}function ul(c){let n,o,a,p,b;function d(_,f){return _[0]?pl:fl}let h=d(c),g=h(c),w=c[0]&&je();return{c(){n=e("button"),g.c(),o=s(),w&&w.c(),a=ll(),i(n,"class","btn btn-sm btn-secondary m-t-10")},m(_,f){u(_,n,f),g.m(n,null),u(_,o,f),w&&w.m(_,f),u(_,a,f),p||(b=el(n,"click",c[1]),p=!0)},p(_,[f]){h!==(h=d(_))&&(g.d(1),g=h(_),g&&(g.c(),g.m(n,null))),_[0]?w||(w=je(),w.c(),w.m(a.parentNode,a)):w&&(w.d(1),w=null)},i:Ge,o:Ge,d(_){_&&m(n),g.d(),_&&m(o),w&&w.d(_),_&&m(a),p=!1,b()}}}function ml(c,n,o){let a=!1;function p(){o(0,a=!a)}return[a,p]}class bl extends Ye{constructor(n){super(),Ze(this,n,ml,ul,tl,{})}}function ze(c,n,o){const a=c.slice();return a[7]=n[o],a}function Je(c,n,o){const a=c.slice();return a[7]=n[o],a}function Ke(c,n,o){const a=c.slice();return a[12]=n[o],a[14]=o,a}function Qe(c){let n;return{c(){n=e("p"),n.innerHTML="Requires admin Authorization:TOKEN header",i(n,"class","txt-hint txt-sm txt-right")},m(o,a){u(o,n,a)},d(o){o&&m(n)}}}function Ve(c){let n,o=c[12]+"",a,p=c[14]= "2022-01-01 00:00:00" && someField1 != someField2', + }); + + // you can also fetch all records at once via getFullList + const records = await pb.collection('${(Pe=c[0])==null?void 0:Pe.name}').getFullList({ + sort: '-created', + }); + + // or fetch only the first record that matches the specified filter + const record = await pb.collection('${(Se=c[0])==null?void 0:Se.name}').getFirstListItem('someField="test"', { + expand: 'relField1,relField2.subRelField', + }); + `,dart:` + import 'package:pocketbase/pocketbase.dart'; + + final pb = PocketBase('${c[3]}'); + + ... + + // fetch a paginated records list + final resultList = await pb.collection('${(Re=c[0])==null?void 0:Re.name}').getList( + page: 1, + perPage: 50, + filter: 'created >= "2022-01-01 00:00:00" && someField1 != someField2', + ); + + // you can also fetch all records at once via getFullList + final records = await pb.collection('${(Oe=c[0])==null?void 0:Oe.name}').getFullList( + sort: '-created', + ); + + // or fetch only the first record that matches the specified filter + final record = await pb.collection('${(Ee=c[0])==null?void 0:Ee.name}').getFirstListItem( + 'someField="test"', + expand: 'relField1,relField2.subRelField', + ); + `}});let y=c[1]&&Qe();ot=new ve({props:{content:` + // DESC by created and ASC by id + ?sort=-created,id + `}});let Zt=c[4],T=[];for(let l=0;l'2022-01-01') + `}}),P=new bl({}),it=new ve({props:{content:"?expand=relField1,relField2.subRelField"}});let ke=c[5];const Le=l=>l[7].code;for(let l=0;ll[7].code;for(let l=0;lParam + Type + Description`,yt=s(),v=e("tbody"),st=e("tr"),st.innerHTML=`page + Number + The page (aka. offset) of the paginated list (default to 1).`,vt=s(),Jt=e("tr"),Jt.innerHTML=`perPage + Number + Specify the max returned records per page (default to 30).`,Ft=s(),j=e("tr"),nt=e("td"),nt.textContent="sort",Lt=s(),Kt=e("td"),Kt.innerHTML='String',At=s(),L=e("td"),ft=x("Specify the records order attribute(s). "),Tt=e("br"),ie=x(` + Add `),pt=e("code"),pt.textContent="-",ae=x(" / "),D=e("code"),D.textContent="+",Pt=x(` (default) in front of the attribute for DESC / ASC order. + Ex.: + `),te(ot.$$.fragment),St=s(),R=e("p"),ut=e("strong"),ut.textContent="Supported record sort fields:",re=s(),z=e("br"),Rt=s(),Qt=e("code"),Qt.textContent="@random",Ot=x(`, + `);for(let l=0;lString',de=s(),I=e("td"),fe=x(`Filter the returned records. Ex.: + `),te(B.$$.fragment),pe=s(),te(P.$$.fragment),Et=s(),K=e("tr"),bt=e("td"),bt.textContent="expand",ue=s(),ht=e("td"),ht.innerHTML='String',me=s(),$=e("td"),Nt=x(`Auto expand record relations. Ex.: + `),te(it.$$.fragment),qt=x(` + Supports up to 6-levels depth nested relations expansion. `),be=e("br"),Mt=x(` + The expanded relations will be appended to each individual record under the + `),Wt=e("code"),Wt.textContent="expand",Q=x(" property (eg. "),_t=e("code"),_t.textContent='"expand": {"relField1": {...}, ...}',he=x(`). + `),Ht=e("br"),_e=x(` + Only the relations to which the request user has permissions to `),wt=e("strong"),wt.textContent="view",we=x(" will be expanded."),V=s(),xt=e("tr"),xt.innerHTML=`fields + String + Comma separated string of the fields to return in the JSON response + (by default returns all fields).`,xe=s(),gt=e("tr"),gt.innerHTML=`skipTotal + Boolean + If it is set the total counts query will be skipped and the response fields + totalItems and totalPages will have -1 value. +
+ This could drastically speed up the search queries when the total counters are not needed or cursor + based pagination is used. +
+ For optimization purposes, it is set by default for the + getFirstListItem() + and + getFullList() SDKs methods.`,Xt=s(),W=e("div"),W.textContent="Responses",Yt=s(),A=e("div"),X=e("div");for(let l=0;l= "2022-01-01 00:00:00" && someField1 != someField2', + }); + + // you can also fetch all records at once via getFullList + const records = await pb.collection('${(qe=l[0])==null?void 0:qe.name}').getFullList({ + sort: '-created', + }); + + // or fetch only the first record that matches the specified filter + const record = await pb.collection('${(Me=l[0])==null?void 0:Me.name}').getFirstListItem('someField="test"', { + expand: 'relField1,relField2.subRelField', + }); + `),r&9&&(C.dart=` + import 'package:pocketbase/pocketbase.dart'; + + final pb = PocketBase('${l[3]}'); + + ... + + // fetch a paginated records list + final resultList = await pb.collection('${(He=l[0])==null?void 0:He.name}').getList( + page: 1, + perPage: 50, + filter: 'created >= "2022-01-01 00:00:00" && someField1 != someField2', + ); + + // you can also fetch all records at once via getFullList + final records = await pb.collection('${(De=l[0])==null?void 0:De.name}').getFullList( + sort: '-created', + ); + + // or fetch only the first record that matches the specified filter + final record = await pb.collection('${(Ie=l[0])==null?void 0:Ie.name}').getFirstListItem( + 'someField="test"', + expand: 'relField1,relField2.subRelField', + ); + `),E.$set(C),(!k||r&1)&&$t!==($t=l[0].name+"")&&$e(et,$t),l[1]?y||(y=Qe(),y.c(),y.m(S,null)):y&&(y.d(1),y=null),r&16){Zt=l[4];let M;for(M=0;Mo(2,h=_.code);return c.$$set=_=>{"collection"in _&&o(0,d=_.collection)},c.$$.update=()=>{c.$$.dirty&1&&o(4,a=ye.getAllCollectionIdentifiers(d)),c.$$.dirty&1&&o(1,p=(d==null?void 0:d.listRule)===null),c.$$.dirty&3&&d!=null&&d.id&&(g.push({code:200,body:JSON.stringify({page:1,perPage:30,totalPages:1,totalItems:2,items:[ye.dummyCollectionRecord(d),ye.dummyCollectionRecord(d)]},null,2)}),g.push({code:400,body:` + { + "code": 400, + "message": "Something went wrong while processing your request. Invalid filter.", + "data": {} + } + `}),p&&g.push({code:403,body:` + { + "code": 403, + "message": "Only admins can access this action.", + "data": {} + } + `}))},o(3,b=ye.getApiExampleUrl(cl.baseUrl)),[d,p,h,b,a,g,w]}class gl extends Ye{constructor(n){super(),Ze(this,n,_l,hl,tl,{collection:0})}}export{gl as default}; diff --git a/ui/dist/assets/ListExternalAuthsDocs-bbdc6c6d.js b/ui/dist/assets/ListExternalAuthsDocs-8a43e213.js similarity index 97% rename from ui/dist/assets/ListExternalAuthsDocs-bbdc6c6d.js rename to ui/dist/assets/ListExternalAuthsDocs-8a43e213.js index b39ba0423..a51d3d32b 100644 --- a/ui/dist/assets/ListExternalAuthsDocs-bbdc6c6d.js +++ b/ui/dist/assets/ListExternalAuthsDocs-8a43e213.js @@ -1,4 +1,4 @@ -import{S as ze,i as Qe,s as Re,e as n,w as v,b as f,c as de,f as m,g as r,h as o,m as pe,x as F,N as Le,P as Ue,k as je,Q as Fe,n as Ne,t as N,a as G,o as c,d as ue,T as Ge,C as Ke,p as Je,r as K,u as Ve,M as Xe}from"./index-c3cca8a1.js";import{S as Ye}from"./SdkTabs-4e51916e.js";import{F as Ze}from"./FieldsQueryParam-7f27fd99.js";function De(a,l,s){const i=a.slice();return i[5]=l[s],i}function He(a,l,s){const i=a.slice();return i[5]=l[s],i}function Oe(a,l){let s,i=l[5].code+"",b,_,d,u;function h(){return l[4](l[5])}return{key:a,first:null,c(){s=n("button"),b=v(i),_=f(),m(s,"class","tab-item"),K(s,"active",l[1]===l[5].code),this.first=s},m(y,P){r(y,s,P),o(s,b),o(s,_),d||(u=Ve(s,"click",h),d=!0)},p(y,P){l=y,P&4&&i!==(i=l[5].code+"")&&F(b,i),P&6&&K(s,"active",l[1]===l[5].code)},d(y){y&&c(s),d=!1,u()}}}function We(a,l){let s,i,b,_;return i=new Xe({props:{content:l[5].body}}),{key:a,first:null,c(){s=n("div"),de(i.$$.fragment),b=f(),m(s,"class","tab-item"),K(s,"active",l[1]===l[5].code),this.first=s},m(d,u){r(d,s,u),pe(i,s,null),o(s,b),_=!0},p(d,u){l=d;const h={};u&4&&(h.content=l[5].body),i.$set(h),(!_||u&6)&&K(s,"active",l[1]===l[5].code)},i(d){_||(N(i.$$.fragment,d),_=!0)},o(d){G(i.$$.fragment,d),_=!1},d(d){d&&c(s),ue(i)}}}function xe(a){var Ce,ge,Se,Ee;let l,s,i=a[0].name+"",b,_,d,u,h,y,P,W=a[0].name+"",J,fe,me,V,X,T,Y,I,Z,$,z,be,Q,A,he,x,R=a[0].name+"",ee,_e,te,ke,ve,U,le,B,se,q,oe,M,ae,C,ie,we,ne,E,re,L,ce,g,D,w=[],$e=new Map,ye,H,k=[],Pe=new Map,S;T=new Ye({props:{js:` +import{S as ze,i as Qe,s as Re,e as n,w as v,b as f,c as de,f as m,g as r,h as o,m as pe,x as F,N as Le,P as Ue,k as je,Q as Fe,n as Ne,t as N,a as G,o as c,d as ue,T as Ge,C as Ke,p as Je,r as K,u as Ve,M as Xe}from"./index-058d72e8.js";import{S as Ye}from"./SdkTabs-f9f405f6.js";import{F as Ze}from"./FieldsQueryParam-2bcd23bc.js";function De(a,l,s){const i=a.slice();return i[5]=l[s],i}function He(a,l,s){const i=a.slice();return i[5]=l[s],i}function Oe(a,l){let s,i=l[5].code+"",b,_,d,u;function h(){return l[4](l[5])}return{key:a,first:null,c(){s=n("button"),b=v(i),_=f(),m(s,"class","tab-item"),K(s,"active",l[1]===l[5].code),this.first=s},m(y,P){r(y,s,P),o(s,b),o(s,_),d||(u=Ve(s,"click",h),d=!0)},p(y,P){l=y,P&4&&i!==(i=l[5].code+"")&&F(b,i),P&6&&K(s,"active",l[1]===l[5].code)},d(y){y&&c(s),d=!1,u()}}}function We(a,l){let s,i,b,_;return i=new Xe({props:{content:l[5].body}}),{key:a,first:null,c(){s=n("div"),de(i.$$.fragment),b=f(),m(s,"class","tab-item"),K(s,"active",l[1]===l[5].code),this.first=s},m(d,u){r(d,s,u),pe(i,s,null),o(s,b),_=!0},p(d,u){l=d;const h={};u&4&&(h.content=l[5].body),i.$set(h),(!_||u&6)&&K(s,"active",l[1]===l[5].code)},i(d){_||(N(i.$$.fragment,d),_=!0)},o(d){G(i.$$.fragment,d),_=!1},d(d){d&&c(s),ue(i)}}}function xe(a){var Ce,ge,Se,Ee;let l,s,i=a[0].name+"",b,_,d,u,h,y,P,W=a[0].name+"",J,fe,me,V,X,T,Y,I,Z,$,z,be,Q,A,he,x,R=a[0].name+"",ee,_e,te,ke,ve,U,le,B,se,q,oe,M,ae,C,ie,we,ne,E,re,L,ce,g,D,w=[],$e=new Map,ye,H,k=[],Pe=new Map,S;T=new Ye({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${a[3]}'); diff --git a/ui/dist/assets/PageAdminConfirmPasswordReset-1c4c6f99.js b/ui/dist/assets/PageAdminConfirmPasswordReset-6d6ca8f2.js similarity index 98% rename from ui/dist/assets/PageAdminConfirmPasswordReset-1c4c6f99.js rename to ui/dist/assets/PageAdminConfirmPasswordReset-6d6ca8f2.js index 3a753d525..f4a271cbe 100644 --- a/ui/dist/assets/PageAdminConfirmPasswordReset-1c4c6f99.js +++ b/ui/dist/assets/PageAdminConfirmPasswordReset-6d6ca8f2.js @@ -1,2 +1,2 @@ -import{S as E,i as G,s as I,F as K,c as A,m as B,t as N,a as T,d as h,C as M,q as J,e as c,w as q,b as C,f as u,r as L,g as b,h as _,u as j,v as O,j as Q,l as U,o as w,A as V,p as W,B as X,D as Y,x as Z,z as S}from"./index-c3cca8a1.js";function y(f){let e,o,s;return{c(){e=q("for "),o=c("strong"),s=q(f[3]),u(o,"class","txt-nowrap")},m(l,t){b(l,e,t),b(l,o,t),_(o,s)},p(l,t){t&8&&Z(s,l[3])},d(l){l&&w(e),l&&w(o)}}}function x(f){let e,o,s,l,t,r,p,d;return{c(){e=c("label"),o=q("New password"),l=C(),t=c("input"),u(e,"for",s=f[8]),u(t,"type","password"),u(t,"id",r=f[8]),t.required=!0,t.autofocus=!0},m(n,i){b(n,e,i),_(e,o),b(n,l,i),b(n,t,i),S(t,f[0]),t.focus(),p||(d=j(t,"input",f[6]),p=!0)},p(n,i){i&256&&s!==(s=n[8])&&u(e,"for",s),i&256&&r!==(r=n[8])&&u(t,"id",r),i&1&&t.value!==n[0]&&S(t,n[0])},d(n){n&&w(e),n&&w(l),n&&w(t),p=!1,d()}}}function ee(f){let e,o,s,l,t,r,p,d;return{c(){e=c("label"),o=q("New password confirm"),l=C(),t=c("input"),u(e,"for",s=f[8]),u(t,"type","password"),u(t,"id",r=f[8]),t.required=!0},m(n,i){b(n,e,i),_(e,o),b(n,l,i),b(n,t,i),S(t,f[1]),p||(d=j(t,"input",f[7]),p=!0)},p(n,i){i&256&&s!==(s=n[8])&&u(e,"for",s),i&256&&r!==(r=n[8])&&u(t,"id",r),i&2&&t.value!==n[1]&&S(t,n[1])},d(n){n&&w(e),n&&w(l),n&&w(t),p=!1,d()}}}function te(f){let e,o,s,l,t,r,p,d,n,i,g,F,P,v,k,R,z,m=f[3]&&y(f);return r=new J({props:{class:"form-field required",name:"password",$$slots:{default:[x,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:f}}}),d=new J({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[ee,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:f}}}),{c(){e=c("form"),o=c("div"),s=c("h4"),l=q(`Reset your admin password +import{S as E,i as G,s as I,F as K,c as A,m as B,t as N,a as T,d as h,C as M,q as J,e as c,w as q,b as C,f as u,r as L,g as b,h as _,u as j,v as O,j as Q,l as U,o as w,A as V,p as W,B as X,D as Y,x as Z,z as S}from"./index-058d72e8.js";function y(f){let e,o,s;return{c(){e=q("for "),o=c("strong"),s=q(f[3]),u(o,"class","txt-nowrap")},m(l,t){b(l,e,t),b(l,o,t),_(o,s)},p(l,t){t&8&&Z(s,l[3])},d(l){l&&w(e),l&&w(o)}}}function x(f){let e,o,s,l,t,r,p,d;return{c(){e=c("label"),o=q("New password"),l=C(),t=c("input"),u(e,"for",s=f[8]),u(t,"type","password"),u(t,"id",r=f[8]),t.required=!0,t.autofocus=!0},m(n,i){b(n,e,i),_(e,o),b(n,l,i),b(n,t,i),S(t,f[0]),t.focus(),p||(d=j(t,"input",f[6]),p=!0)},p(n,i){i&256&&s!==(s=n[8])&&u(e,"for",s),i&256&&r!==(r=n[8])&&u(t,"id",r),i&1&&t.value!==n[0]&&S(t,n[0])},d(n){n&&w(e),n&&w(l),n&&w(t),p=!1,d()}}}function ee(f){let e,o,s,l,t,r,p,d;return{c(){e=c("label"),o=q("New password confirm"),l=C(),t=c("input"),u(e,"for",s=f[8]),u(t,"type","password"),u(t,"id",r=f[8]),t.required=!0},m(n,i){b(n,e,i),_(e,o),b(n,l,i),b(n,t,i),S(t,f[1]),p||(d=j(t,"input",f[7]),p=!0)},p(n,i){i&256&&s!==(s=n[8])&&u(e,"for",s),i&256&&r!==(r=n[8])&&u(t,"id",r),i&2&&t.value!==n[1]&&S(t,n[1])},d(n){n&&w(e),n&&w(l),n&&w(t),p=!1,d()}}}function te(f){let e,o,s,l,t,r,p,d,n,i,g,F,P,v,k,R,z,m=f[3]&&y(f);return r=new J({props:{class:"form-field required",name:"password",$$slots:{default:[x,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:f}}}),d=new J({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[ee,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:f}}}),{c(){e=c("form"),o=c("div"),s=c("h4"),l=q(`Reset your admin password `),m&&m.c(),t=C(),A(r.$$.fragment),p=C(),A(d.$$.fragment),n=C(),i=c("button"),g=c("span"),g.textContent="Set new password",F=C(),P=c("div"),v=c("a"),v.textContent="Back to login",u(s,"class","m-b-xs"),u(o,"class","content txt-center m-b-sm"),u(g,"class","txt"),u(i,"type","submit"),u(i,"class","btn btn-lg btn-block"),i.disabled=f[2],L(i,"btn-loading",f[2]),u(e,"class","m-b-base"),u(v,"href","/login"),u(v,"class","link-hint"),u(P,"class","content txt-center")},m(a,$){b(a,e,$),_(e,o),_(o,s),_(s,l),m&&m.m(s,null),_(e,t),B(r,e,null),_(e,p),B(d,e,null),_(e,n),_(e,i),_(i,g),b(a,F,$),b(a,P,$),_(P,v),k=!0,R||(z=[j(e,"submit",O(f[4])),Q(U.call(null,v))],R=!0)},p(a,$){a[3]?m?m.p(a,$):(m=y(a),m.c(),m.m(s,null)):m&&(m.d(1),m=null);const D={};$&769&&(D.$$scope={dirty:$,ctx:a}),r.$set(D);const H={};$&770&&(H.$$scope={dirty:$,ctx:a}),d.$set(H),(!k||$&4)&&(i.disabled=a[2]),(!k||$&4)&&L(i,"btn-loading",a[2])},i(a){k||(N(r.$$.fragment,a),N(d.$$.fragment,a),k=!0)},o(a){T(r.$$.fragment,a),T(d.$$.fragment,a),k=!1},d(a){a&&w(e),m&&m.d(),h(r),h(d),a&&w(F),a&&w(P),R=!1,V(z)}}}function se(f){let e,o;return e=new K({props:{$$slots:{default:[te]},$$scope:{ctx:f}}}),{c(){A(e.$$.fragment)},m(s,l){B(e,s,l),o=!0},p(s,[l]){const t={};l&527&&(t.$$scope={dirty:l,ctx:s}),e.$set(t)},i(s){o||(N(e.$$.fragment,s),o=!0)},o(s){T(e.$$.fragment,s),o=!1},d(s){h(e,s)}}}function le(f,e,o){let s,{params:l}=e,t="",r="",p=!1;async function d(){if(!p){o(2,p=!0);try{await W.admins.confirmPasswordReset(l==null?void 0:l.token,t,r),X("Successfully set a new admin password."),Y("/")}catch(g){W.error(g)}o(2,p=!1)}}function n(){t=this.value,o(0,t)}function i(){r=this.value,o(1,r)}return f.$$set=g=>{"params"in g&&o(5,l=g.params)},f.$$.update=()=>{f.$$.dirty&32&&o(3,s=M.getJWTPayload(l==null?void 0:l.token).email||"")},[t,r,p,s,d,l,n,i]}class ae extends E{constructor(e){super(),G(this,e,le,se,I,{params:5})}}export{ae as default}; diff --git a/ui/dist/assets/PageAdminRequestPasswordReset-3bd34818.js b/ui/dist/assets/PageAdminRequestPasswordReset-47c28d06.js similarity index 98% rename from ui/dist/assets/PageAdminRequestPasswordReset-3bd34818.js rename to ui/dist/assets/PageAdminRequestPasswordReset-47c28d06.js index ef4b2380b..56801f37e 100644 --- a/ui/dist/assets/PageAdminRequestPasswordReset-3bd34818.js +++ b/ui/dist/assets/PageAdminRequestPasswordReset-47c28d06.js @@ -1,2 +1,2 @@ -import{S as M,i as T,s as j,F as z,c as R,m as S,t as w,a as y,d as E,b as g,e as _,f as p,g as k,h as d,j as A,l as B,k as N,n as D,o as v,p as C,q as G,r as F,u as H,v as I,w as h,x as J,y as P,z as L}from"./index-c3cca8a1.js";function K(c){let e,s,n,l,t,i,f,m,o,a,b,u;return l=new G({props:{class:"form-field required",name:"email",$$slots:{default:[Q,({uniqueId:r})=>({5:r}),({uniqueId:r})=>r?32:0]},$$scope:{ctx:c}}}),{c(){e=_("form"),s=_("div"),s.innerHTML=`

Forgotten admin password

+import{S as M,i as T,s as j,F as z,c as R,m as S,t as w,a as y,d as E,b as g,e as _,f as p,g as k,h as d,j as A,l as B,k as N,n as D,o as v,p as C,q as G,r as F,u as H,v as I,w as h,x as J,y as P,z as L}from"./index-058d72e8.js";function K(c){let e,s,n,l,t,i,f,m,o,a,b,u;return l=new G({props:{class:"form-field required",name:"email",$$slots:{default:[Q,({uniqueId:r})=>({5:r}),({uniqueId:r})=>r?32:0]},$$scope:{ctx:c}}}),{c(){e=_("form"),s=_("div"),s.innerHTML=`

Forgotten admin password

Enter the email associated with your account and we’ll send you a recovery link:

`,n=g(),R(l.$$.fragment),t=g(),i=_("button"),f=_("i"),m=g(),o=_("span"),o.textContent="Send recovery link",p(s,"class","content txt-center m-b-sm"),p(f,"class","ri-mail-send-line"),p(o,"class","txt"),p(i,"type","submit"),p(i,"class","btn btn-lg btn-block"),i.disabled=c[1],F(i,"btn-loading",c[1]),p(e,"class","m-b-base")},m(r,$){k(r,e,$),d(e,s),d(e,n),S(l,e,null),d(e,t),d(e,i),d(i,f),d(i,m),d(i,o),a=!0,b||(u=H(e,"submit",I(c[3])),b=!0)},p(r,$){const q={};$&97&&(q.$$scope={dirty:$,ctx:r}),l.$set(q),(!a||$&2)&&(i.disabled=r[1]),(!a||$&2)&&F(i,"btn-loading",r[1])},i(r){a||(w(l.$$.fragment,r),a=!0)},o(r){y(l.$$.fragment,r),a=!1},d(r){r&&v(e),E(l),b=!1,u()}}}function O(c){let e,s,n,l,t,i,f,m,o;return{c(){e=_("div"),s=_("div"),s.innerHTML='',n=g(),l=_("div"),t=_("p"),i=h("Check "),f=_("strong"),m=h(c[0]),o=h(" for the recovery link."),p(s,"class","icon"),p(f,"class","txt-nowrap"),p(l,"class","content"),p(e,"class","alert alert-success")},m(a,b){k(a,e,b),d(e,s),d(e,n),d(e,l),d(l,t),d(t,i),d(t,f),d(f,m),d(t,o)},p(a,b){b&1&&J(m,a[0])},i:P,o:P,d(a){a&&v(e)}}}function Q(c){let e,s,n,l,t,i,f,m;return{c(){e=_("label"),s=h("Email"),l=g(),t=_("input"),p(e,"for",n=c[5]),p(t,"type","email"),p(t,"id",i=c[5]),t.required=!0,t.autofocus=!0},m(o,a){k(o,e,a),d(e,s),k(o,l,a),k(o,t,a),L(t,c[0]),t.focus(),f||(m=H(t,"input",c[4]),f=!0)},p(o,a){a&32&&n!==(n=o[5])&&p(e,"for",n),a&32&&i!==(i=o[5])&&p(t,"id",i),a&1&&t.value!==o[0]&&L(t,o[0])},d(o){o&&v(e),o&&v(l),o&&v(t),f=!1,m()}}}function U(c){let e,s,n,l,t,i,f,m;const o=[O,K],a=[];function b(u,r){return u[2]?0:1}return e=b(c),s=a[e]=o[e](c),{c(){s.c(),n=g(),l=_("div"),t=_("a"),t.textContent="Back to login",p(t,"href","/login"),p(t,"class","link-hint"),p(l,"class","content txt-center")},m(u,r){a[e].m(u,r),k(u,n,r),k(u,l,r),d(l,t),i=!0,f||(m=A(B.call(null,t)),f=!0)},p(u,r){let $=e;e=b(u),e===$?a[e].p(u,r):(N(),y(a[$],1,1,()=>{a[$]=null}),D(),s=a[e],s?s.p(u,r):(s=a[e]=o[e](u),s.c()),w(s,1),s.m(n.parentNode,n))},i(u){i||(w(s),i=!0)},o(u){y(s),i=!1},d(u){a[e].d(u),u&&v(n),u&&v(l),f=!1,m()}}}function V(c){let e,s;return e=new z({props:{$$slots:{default:[U]},$$scope:{ctx:c}}}),{c(){R(e.$$.fragment)},m(n,l){S(e,n,l),s=!0},p(n,[l]){const t={};l&71&&(t.$$scope={dirty:l,ctx:n}),e.$set(t)},i(n){s||(w(e.$$.fragment,n),s=!0)},o(n){y(e.$$.fragment,n),s=!1},d(n){E(e,n)}}}function W(c,e,s){let n="",l=!1,t=!1;async function i(){if(!l){s(1,l=!0);try{await C.admins.requestPasswordReset(n),s(2,t=!0)}catch(m){C.error(m)}s(1,l=!1)}}function f(){n=this.value,s(0,n)}return[n,l,t,i,f]}class Y extends M{constructor(e){super(),T(this,e,W,V,j,{})}}export{Y as default}; diff --git a/ui/dist/assets/PageOAuth2Redirect-358d18df.js b/ui/dist/assets/PageOAuth2Redirect-747e1d69.js similarity index 87% rename from ui/dist/assets/PageOAuth2Redirect-358d18df.js rename to ui/dist/assets/PageOAuth2Redirect-747e1d69.js index 15aa5de36..97430e707 100644 --- a/ui/dist/assets/PageOAuth2Redirect-358d18df.js +++ b/ui/dist/assets/PageOAuth2Redirect-747e1d69.js @@ -1,2 +1,2 @@ -import{S as o,i,s as c,e as r,f as l,g as u,y as s,o as d,H as h}from"./index-c3cca8a1.js";function f(n){let t;return{c(){t=r("div"),t.innerHTML=`

Auth completed.

+import{S as o,i,s as c,e as r,f as l,g as u,y as s,o as d,H as h}from"./index-058d72e8.js";function f(n){let t;return{c(){t=r("div"),t.innerHTML=`

Auth completed.

You can go back to the app if this window is not automatically closed.
`,l(t,"class","content txt-hint txt-center p-base")},m(e,a){u(e,t,a)},p:s,i:s,o:s,d(e){e&&d(t)}}}function m(n){return h(()=>{window.close()}),[]}class x extends o{constructor(t){super(),i(this,t,m,f,c,{})}}export{x as default}; diff --git a/ui/dist/assets/PageRecordConfirmEmailChange-d7c4b499.js b/ui/dist/assets/PageRecordConfirmEmailChange-4d744f8a.js similarity index 98% rename from ui/dist/assets/PageRecordConfirmEmailChange-d7c4b499.js rename to ui/dist/assets/PageRecordConfirmEmailChange-4d744f8a.js index e0468be81..fb141cfa3 100644 --- a/ui/dist/assets/PageRecordConfirmEmailChange-d7c4b499.js +++ b/ui/dist/assets/PageRecordConfirmEmailChange-4d744f8a.js @@ -1,4 +1,4 @@ -import{S as G,i as I,s as J,F as M,c as H,m as L,t as v,a as y,d as z,C as N,E as O,g as _,k as R,n as W,o as b,O as Y,G as j,p as A,q as B,e as m,w as C,b as h,f as d,r as T,h as k,u as P,v as D,y as E,x as K,z as F}from"./index-c3cca8a1.js";function Q(r){let e,t,l,s,n,o,c,i,a,u,g,$,p=r[3]&&S(r);return o=new B({props:{class:"form-field required",name:"password",$$slots:{default:[V,({uniqueId:f})=>({8:f}),({uniqueId:f})=>f?256:0]},$$scope:{ctx:r}}}),{c(){e=m("form"),t=m("div"),l=m("h5"),s=C(`Type your password to confirm changing your email address +import{S as G,i as I,s as J,F as M,c as H,m as L,t as v,a as y,d as z,C as N,E as O,g as _,k as R,n as W,o as b,O as Y,G as j,p as A,q as B,e as m,w as C,b as h,f as d,r as T,h as k,u as P,v as D,y as E,x as K,z as F}from"./index-058d72e8.js";function Q(r){let e,t,l,s,n,o,c,i,a,u,g,$,p=r[3]&&S(r);return o=new B({props:{class:"form-field required",name:"password",$$slots:{default:[V,({uniqueId:f})=>({8:f}),({uniqueId:f})=>f?256:0]},$$scope:{ctx:r}}}),{c(){e=m("form"),t=m("div"),l=m("h5"),s=C(`Type your password to confirm changing your email address `),p&&p.c(),n=h(),H(o.$$.fragment),c=h(),i=m("button"),a=m("span"),a.textContent="Confirm new email",d(t,"class","content txt-center m-b-base"),d(a,"class","txt"),d(i,"type","submit"),d(i,"class","btn btn-lg btn-block"),i.disabled=r[1],T(i,"btn-loading",r[1])},m(f,w){_(f,e,w),k(e,t),k(t,l),k(l,s),p&&p.m(l,null),k(e,n),L(o,e,null),k(e,c),k(e,i),k(i,a),u=!0,g||($=P(e,"submit",D(r[4])),g=!0)},p(f,w){f[3]?p?p.p(f,w):(p=S(f),p.c(),p.m(l,null)):p&&(p.d(1),p=null);const q={};w&769&&(q.$$scope={dirty:w,ctx:f}),o.$set(q),(!u||w&2)&&(i.disabled=f[1]),(!u||w&2)&&T(i,"btn-loading",f[1])},i(f){u||(v(o.$$.fragment,f),u=!0)},o(f){y(o.$$.fragment,f),u=!1},d(f){f&&b(e),p&&p.d(),z(o),g=!1,$()}}}function U(r){let e,t,l,s,n;return{c(){e=m("div"),e.innerHTML=`

Successfully changed the user email address.

You can now sign in with your new email address.

`,t=h(),l=m("button"),l.textContent="Close",d(e,"class","alert alert-success"),d(l,"type","button"),d(l,"class","btn btn-transparent btn-block")},m(o,c){_(o,e,c),_(o,t,c),_(o,l,c),s||(n=P(l,"click",r[6]),s=!0)},p:E,i:E,o:E,d(o){o&&b(e),o&&b(t),o&&b(l),s=!1,n()}}}function S(r){let e,t,l;return{c(){e=C("to "),t=m("strong"),l=C(r[3]),d(t,"class","txt-nowrap")},m(s,n){_(s,e,n),_(s,t,n),k(t,l)},p(s,n){n&8&&K(l,s[3])},d(s){s&&b(e),s&&b(t)}}}function V(r){let e,t,l,s,n,o,c,i;return{c(){e=m("label"),t=C("Password"),s=h(),n=m("input"),d(e,"for",l=r[8]),d(n,"type","password"),d(n,"id",o=r[8]),n.required=!0,n.autofocus=!0},m(a,u){_(a,e,u),k(e,t),_(a,s,u),_(a,n,u),F(n,r[0]),n.focus(),c||(i=P(n,"input",r[7]),c=!0)},p(a,u){u&256&&l!==(l=a[8])&&d(e,"for",l),u&256&&o!==(o=a[8])&&d(n,"id",o),u&1&&n.value!==a[0]&&F(n,a[0])},d(a){a&&b(e),a&&b(s),a&&b(n),c=!1,i()}}}function X(r){let e,t,l,s;const n=[U,Q],o=[];function c(i,a){return i[2]?0:1}return e=c(r),t=o[e]=n[e](r),{c(){t.c(),l=O()},m(i,a){o[e].m(i,a),_(i,l,a),s=!0},p(i,a){let u=e;e=c(i),e===u?o[e].p(i,a):(R(),y(o[u],1,1,()=>{o[u]=null}),W(),t=o[e],t?t.p(i,a):(t=o[e]=n[e](i),t.c()),v(t,1),t.m(l.parentNode,l))},i(i){s||(v(t),s=!0)},o(i){y(t),s=!1},d(i){o[e].d(i),i&&b(l)}}}function Z(r){let e,t;return e=new M({props:{nobranding:!0,$$slots:{default:[X]},$$scope:{ctx:r}}}),{c(){H(e.$$.fragment)},m(l,s){L(e,l,s),t=!0},p(l,[s]){const n={};s&527&&(n.$$scope={dirty:s,ctx:l}),e.$set(n)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){y(e.$$.fragment,l),t=!1},d(l){z(e,l)}}}function x(r,e,t){let l,{params:s}=e,n="",o=!1,c=!1;async function i(){if(o)return;t(1,o=!0);const g=new Y("../");try{const $=j(s==null?void 0:s.token);await g.collection($.collectionId).confirmEmailChange(s==null?void 0:s.token,n),t(2,c=!0)}catch($){A.error($)}t(1,o=!1)}const a=()=>window.close();function u(){n=this.value,t(0,n)}return r.$$set=g=>{"params"in g&&t(5,s=g.params)},r.$$.update=()=>{r.$$.dirty&32&&t(3,l=N.getJWTPayload(s==null?void 0:s.token).newEmail||"")},[n,o,c,l,i,s,a,u]}class te extends G{constructor(e){super(),I(this,e,x,Z,J,{params:5})}}export{te as default}; diff --git a/ui/dist/assets/PageRecordConfirmPasswordReset-6b9ed1dd.js b/ui/dist/assets/PageRecordConfirmPasswordReset-e98c3e9b.js similarity index 98% rename from ui/dist/assets/PageRecordConfirmPasswordReset-6b9ed1dd.js rename to ui/dist/assets/PageRecordConfirmPasswordReset-e98c3e9b.js index ea7268873..9157bf757 100644 --- a/ui/dist/assets/PageRecordConfirmPasswordReset-6b9ed1dd.js +++ b/ui/dist/assets/PageRecordConfirmPasswordReset-e98c3e9b.js @@ -1,4 +1,4 @@ -import{S as J,i as M,s as O,F as W,c as N,m as T,t as y,a as q,d as H,C as Y,E as j,g as _,k as A,n as B,o as m,O as D,G as K,p as Q,q as E,e as b,w as h,b as P,f as p,r as G,h as w,u as S,v as U,y as F,x as V,z as R}from"./index-c3cca8a1.js";function X(r){let e,l,s,n,t,o,c,u,i,a,v,k,g,C,d=r[4]&&I(r);return o=new E({props:{class:"form-field required",name:"password",$$slots:{default:[x,({uniqueId:f})=>({10:f}),({uniqueId:f})=>f?1024:0]},$$scope:{ctx:r}}}),u=new E({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[ee,({uniqueId:f})=>({10:f}),({uniqueId:f})=>f?1024:0]},$$scope:{ctx:r}}}),{c(){e=b("form"),l=b("div"),s=b("h5"),n=h(`Reset your user password +import{S as J,i as M,s as O,F as W,c as N,m as T,t as y,a as q,d as H,C as Y,E as j,g as _,k as A,n as B,o as m,O as D,G as K,p as Q,q as E,e as b,w as h,b as P,f as p,r as G,h as w,u as S,v as U,y as F,x as V,z as R}from"./index-058d72e8.js";function X(r){let e,l,s,n,t,o,c,u,i,a,v,k,g,C,d=r[4]&&I(r);return o=new E({props:{class:"form-field required",name:"password",$$slots:{default:[x,({uniqueId:f})=>({10:f}),({uniqueId:f})=>f?1024:0]},$$scope:{ctx:r}}}),u=new E({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[ee,({uniqueId:f})=>({10:f}),({uniqueId:f})=>f?1024:0]},$$scope:{ctx:r}}}),{c(){e=b("form"),l=b("div"),s=b("h5"),n=h(`Reset your user password `),d&&d.c(),t=P(),N(o.$$.fragment),c=P(),N(u.$$.fragment),i=P(),a=b("button"),v=b("span"),v.textContent="Set new password",p(l,"class","content txt-center m-b-base"),p(v,"class","txt"),p(a,"type","submit"),p(a,"class","btn btn-lg btn-block"),a.disabled=r[2],G(a,"btn-loading",r[2])},m(f,$){_(f,e,$),w(e,l),w(l,s),w(s,n),d&&d.m(s,null),w(e,t),T(o,e,null),w(e,c),T(u,e,null),w(e,i),w(e,a),w(a,v),k=!0,g||(C=S(e,"submit",U(r[5])),g=!0)},p(f,$){f[4]?d?d.p(f,$):(d=I(f),d.c(),d.m(s,null)):d&&(d.d(1),d=null);const L={};$&3073&&(L.$$scope={dirty:$,ctx:f}),o.$set(L);const z={};$&3074&&(z.$$scope={dirty:$,ctx:f}),u.$set(z),(!k||$&4)&&(a.disabled=f[2]),(!k||$&4)&&G(a,"btn-loading",f[2])},i(f){k||(y(o.$$.fragment,f),y(u.$$.fragment,f),k=!0)},o(f){q(o.$$.fragment,f),q(u.$$.fragment,f),k=!1},d(f){f&&m(e),d&&d.d(),H(o),H(u),g=!1,C()}}}function Z(r){let e,l,s,n,t;return{c(){e=b("div"),e.innerHTML=`

Successfully changed the user password.

You can now sign in with your new password.

`,l=P(),s=b("button"),s.textContent="Close",p(e,"class","alert alert-success"),p(s,"type","button"),p(s,"class","btn btn-transparent btn-block")},m(o,c){_(o,e,c),_(o,l,c),_(o,s,c),n||(t=S(s,"click",r[7]),n=!0)},p:F,i:F,o:F,d(o){o&&m(e),o&&m(l),o&&m(s),n=!1,t()}}}function I(r){let e,l,s;return{c(){e=h("for "),l=b("strong"),s=h(r[4])},m(n,t){_(n,e,t),_(n,l,t),w(l,s)},p(n,t){t&16&&V(s,n[4])},d(n){n&&m(e),n&&m(l)}}}function x(r){let e,l,s,n,t,o,c,u;return{c(){e=b("label"),l=h("New password"),n=P(),t=b("input"),p(e,"for",s=r[10]),p(t,"type","password"),p(t,"id",o=r[10]),t.required=!0,t.autofocus=!0},m(i,a){_(i,e,a),w(e,l),_(i,n,a),_(i,t,a),R(t,r[0]),t.focus(),c||(u=S(t,"input",r[8]),c=!0)},p(i,a){a&1024&&s!==(s=i[10])&&p(e,"for",s),a&1024&&o!==(o=i[10])&&p(t,"id",o),a&1&&t.value!==i[0]&&R(t,i[0])},d(i){i&&m(e),i&&m(n),i&&m(t),c=!1,u()}}}function ee(r){let e,l,s,n,t,o,c,u;return{c(){e=b("label"),l=h("New password confirm"),n=P(),t=b("input"),p(e,"for",s=r[10]),p(t,"type","password"),p(t,"id",o=r[10]),t.required=!0},m(i,a){_(i,e,a),w(e,l),_(i,n,a),_(i,t,a),R(t,r[1]),c||(u=S(t,"input",r[9]),c=!0)},p(i,a){a&1024&&s!==(s=i[10])&&p(e,"for",s),a&1024&&o!==(o=i[10])&&p(t,"id",o),a&2&&t.value!==i[1]&&R(t,i[1])},d(i){i&&m(e),i&&m(n),i&&m(t),c=!1,u()}}}function te(r){let e,l,s,n;const t=[Z,X],o=[];function c(u,i){return u[3]?0:1}return e=c(r),l=o[e]=t[e](r),{c(){l.c(),s=j()},m(u,i){o[e].m(u,i),_(u,s,i),n=!0},p(u,i){let a=e;e=c(u),e===a?o[e].p(u,i):(A(),q(o[a],1,1,()=>{o[a]=null}),B(),l=o[e],l?l.p(u,i):(l=o[e]=t[e](u),l.c()),y(l,1),l.m(s.parentNode,s))},i(u){n||(y(l),n=!0)},o(u){q(l),n=!1},d(u){o[e].d(u),u&&m(s)}}}function se(r){let e,l;return e=new W({props:{nobranding:!0,$$slots:{default:[te]},$$scope:{ctx:r}}}),{c(){N(e.$$.fragment)},m(s,n){T(e,s,n),l=!0},p(s,[n]){const t={};n&2079&&(t.$$scope={dirty:n,ctx:s}),e.$set(t)},i(s){l||(y(e.$$.fragment,s),l=!0)},o(s){q(e.$$.fragment,s),l=!1},d(s){H(e,s)}}}function le(r,e,l){let s,{params:n}=e,t="",o="",c=!1,u=!1;async function i(){if(c)return;l(2,c=!0);const g=new D("../");try{const C=K(n==null?void 0:n.token);await g.collection(C.collectionId).confirmPasswordReset(n==null?void 0:n.token,t,o),l(3,u=!0)}catch(C){Q.error(C)}l(2,c=!1)}const a=()=>window.close();function v(){t=this.value,l(0,t)}function k(){o=this.value,l(1,o)}return r.$$set=g=>{"params"in g&&l(6,n=g.params)},r.$$.update=()=>{r.$$.dirty&64&&l(4,s=Y.getJWTPayload(n==null?void 0:n.token).email||"")},[t,o,c,u,s,i,n,a,v,k]}class oe extends J{constructor(e){super(),M(this,e,le,se,O,{params:6})}}export{oe as default}; diff --git a/ui/dist/assets/PageRecordConfirmVerification-a9a3ce04.js b/ui/dist/assets/PageRecordConfirmVerification-cb062b13.js similarity index 97% rename from ui/dist/assets/PageRecordConfirmVerification-a9a3ce04.js rename to ui/dist/assets/PageRecordConfirmVerification-cb062b13.js index 3da097098..4eb0a21a1 100644 --- a/ui/dist/assets/PageRecordConfirmVerification-a9a3ce04.js +++ b/ui/dist/assets/PageRecordConfirmVerification-cb062b13.js @@ -1,3 +1,3 @@ -import{S as v,i as y,s as w,F as g,c as x,m as C,t as $,a as L,d as P,O as T,G as H,E as M,g as r,o as a,e as u,b as _,f,u as b,y as p}from"./index-c3cca8a1.js";function S(o){let t,s,e,n,l;return{c(){t=u("div"),t.innerHTML=`
+import{S as v,i as y,s as w,F as g,c as x,m as C,t as $,a as L,d as P,O as T,G as H,E as M,g as r,o as a,e as u,b as _,f,u as b,y as p}from"./index-058d72e8.js";function S(o){let t,s,e,n,l;return{c(){t=u("div"),t.innerHTML=`

Invalid or expired verification token.

`,s=_(),e=u("button"),e.textContent="Close",f(t,"class","alert alert-danger"),f(e,"type","button"),f(e,"class","btn btn-transparent btn-block")},m(i,c){r(i,t,c),r(i,s,c),r(i,e,c),n||(l=b(e,"click",o[4]),n=!0)},p,d(i){i&&a(t),i&&a(s),i&&a(e),n=!1,l()}}}function F(o){let t,s,e,n,l;return{c(){t=u("div"),t.innerHTML=`

Successfully verified email address.

`,s=_(),e=u("button"),e.textContent="Close",f(t,"class","alert alert-success"),f(e,"type","button"),f(e,"class","btn btn-transparent btn-block")},m(i,c){r(i,t,c),r(i,s,c),r(i,e,c),n||(l=b(e,"click",o[3]),n=!0)},p,d(i){i&&a(t),i&&a(s),i&&a(e),n=!1,l()}}}function I(o){let t;return{c(){t=u("div"),t.innerHTML='
Please wait...
',f(t,"class","txt-center")},m(s,e){r(s,t,e)},p,d(s){s&&a(t)}}}function V(o){let t;function s(l,i){return l[1]?I:l[0]?F:S}let e=s(o),n=e(o);return{c(){n.c(),t=M()},m(l,i){n.m(l,i),r(l,t,i)},p(l,i){e===(e=s(l))&&n?n.p(l,i):(n.d(1),n=e(l),n&&(n.c(),n.m(t.parentNode,t)))},d(l){n.d(l),l&&a(t)}}}function q(o){let t,s;return t=new g({props:{nobranding:!0,$$slots:{default:[V]},$$scope:{ctx:o}}}),{c(){x(t.$$.fragment)},m(e,n){C(t,e,n),s=!0},p(e,[n]){const l={};n&67&&(l.$$scope={dirty:n,ctx:e}),t.$set(l)},i(e){s||($(t.$$.fragment,e),s=!0)},o(e){L(t.$$.fragment,e),s=!1},d(e){P(t,e)}}}function E(o,t,s){let{params:e}=t,n=!1,l=!1;i();async function i(){s(1,l=!0);const d=new T("../");try{const m=H(e==null?void 0:e.token);await d.collection(m.collectionId).confirmVerification(e==null?void 0:e.token),s(0,n=!0)}catch{s(0,n=!1)}s(1,l=!1)}const c=()=>window.close(),k=()=>window.close();return o.$$set=d=>{"params"in d&&s(2,e=d.params)},[n,l,e,c,k]}class N extends v{constructor(t){super(),y(this,t,E,q,w,{params:2})}}export{N as default}; diff --git a/ui/dist/assets/RealtimeApiDocs-a8ceb92b.js b/ui/dist/assets/RealtimeApiDocs-4a99164d.js similarity index 98% rename from ui/dist/assets/RealtimeApiDocs-a8ceb92b.js rename to ui/dist/assets/RealtimeApiDocs-4a99164d.js index f40393b89..ca090354f 100644 --- a/ui/dist/assets/RealtimeApiDocs-a8ceb92b.js +++ b/ui/dist/assets/RealtimeApiDocs-4a99164d.js @@ -1,4 +1,4 @@ -import{S as re,i as ae,s as be,M as pe,C as P,e as p,w as y,b as a,c as te,f as u,g as t,h as I,m as ne,x as ue,t as ie,a as ce,o as n,d as le,T as me,p as de}from"./index-c3cca8a1.js";import{S as fe}from"./SdkTabs-4e51916e.js";function $e(s){var B,U,W,T,A,H,L,M,q,j,J,N;let i,m,c=s[0].name+"",b,d,h,f,_,$,k,l,S,v,w,R,C,g,E,r,D;return l=new fe({props:{js:` +import{S as re,i as ae,s as be,M as pe,C as P,e as p,w as y,b as a,c as te,f as u,g as t,h as I,m as ne,x as ue,t as ie,a as ce,o as n,d as le,T as me,p as de}from"./index-058d72e8.js";import{S as fe}from"./SdkTabs-f9f405f6.js";function $e(s){var B,U,W,T,A,H,L,M,q,j,J,N;let i,m,c=s[0].name+"",b,d,h,f,_,$,k,l,S,v,w,R,C,g,E,r,D;return l=new fe({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${s[1]}'); diff --git a/ui/dist/assets/RequestEmailChangeDocs-e4095311.js b/ui/dist/assets/RequestEmailChangeDocs-e01ea9b6.js similarity index 98% rename from ui/dist/assets/RequestEmailChangeDocs-e4095311.js rename to ui/dist/assets/RequestEmailChangeDocs-e01ea9b6.js index 5c4f1fee7..696ce14bc 100644 --- a/ui/dist/assets/RequestEmailChangeDocs-e4095311.js +++ b/ui/dist/assets/RequestEmailChangeDocs-e01ea9b6.js @@ -1,4 +1,4 @@ -import{S as Te,i as Ee,s as Be,e as r,w,b as k,c as Pe,f,g as m,h as n,m as Ce,x as N,N as ve,P as Se,k as Me,Q as Re,n as Ae,t as x,a as ee,o as d,d as ye,T as We,C as ze,p as He,r as O,u as Ue,M as je}from"./index-c3cca8a1.js";import{S as De}from"./SdkTabs-4e51916e.js";function we(o,l,s){const a=o.slice();return a[5]=l[s],a}function ge(o,l,s){const a=o.slice();return a[5]=l[s],a}function $e(o,l){let s,a=l[5].code+"",_,b,i,p;function u(){return l[4](l[5])}return{key:o,first:null,c(){s=r("button"),_=w(a),b=k(),f(s,"class","tab-item"),O(s,"active",l[1]===l[5].code),this.first=s},m($,q){m($,s,q),n(s,_),n(s,b),i||(p=Ue(s,"click",u),i=!0)},p($,q){l=$,q&4&&a!==(a=l[5].code+"")&&N(_,a),q&6&&O(s,"active",l[1]===l[5].code)},d($){$&&d(s),i=!1,p()}}}function qe(o,l){let s,a,_,b;return a=new je({props:{content:l[5].body}}),{key:o,first:null,c(){s=r("div"),Pe(a.$$.fragment),_=k(),f(s,"class","tab-item"),O(s,"active",l[1]===l[5].code),this.first=s},m(i,p){m(i,s,p),Ce(a,s,null),n(s,_),b=!0},p(i,p){l=i;const u={};p&4&&(u.content=l[5].body),a.$set(u),(!b||p&6)&&O(s,"active",l[1]===l[5].code)},i(i){b||(x(a.$$.fragment,i),b=!0)},o(i){ee(a.$$.fragment,i),b=!1},d(i){i&&d(s),ye(a)}}}function Le(o){var de,pe,ue,fe;let l,s,a=o[0].name+"",_,b,i,p,u,$,q,z=o[0].name+"",F,te,I,P,K,T,Q,g,H,le,U,E,se,G,j=o[0].name+"",J,ae,oe,D,V,B,X,S,Y,M,Z,C,R,v=[],ne=new Map,ie,A,h=[],ce=new Map,y;P=new De({props:{js:` +import{S as Te,i as Ee,s as Be,e as r,w,b as k,c as Pe,f,g as m,h as n,m as Ce,x as N,N as ve,P as Se,k as Me,Q as Re,n as Ae,t as x,a as ee,o as d,d as ye,T as We,C as ze,p as He,r as O,u as Ue,M as je}from"./index-058d72e8.js";import{S as De}from"./SdkTabs-f9f405f6.js";function we(o,l,s){const a=o.slice();return a[5]=l[s],a}function ge(o,l,s){const a=o.slice();return a[5]=l[s],a}function $e(o,l){let s,a=l[5].code+"",_,b,i,p;function u(){return l[4](l[5])}return{key:o,first:null,c(){s=r("button"),_=w(a),b=k(),f(s,"class","tab-item"),O(s,"active",l[1]===l[5].code),this.first=s},m($,q){m($,s,q),n(s,_),n(s,b),i||(p=Ue(s,"click",u),i=!0)},p($,q){l=$,q&4&&a!==(a=l[5].code+"")&&N(_,a),q&6&&O(s,"active",l[1]===l[5].code)},d($){$&&d(s),i=!1,p()}}}function qe(o,l){let s,a,_,b;return a=new je({props:{content:l[5].body}}),{key:o,first:null,c(){s=r("div"),Pe(a.$$.fragment),_=k(),f(s,"class","tab-item"),O(s,"active",l[1]===l[5].code),this.first=s},m(i,p){m(i,s,p),Ce(a,s,null),n(s,_),b=!0},p(i,p){l=i;const u={};p&4&&(u.content=l[5].body),a.$set(u),(!b||p&6)&&O(s,"active",l[1]===l[5].code)},i(i){b||(x(a.$$.fragment,i),b=!0)},o(i){ee(a.$$.fragment,i),b=!1},d(i){i&&d(s),ye(a)}}}function Le(o){var de,pe,ue,fe;let l,s,a=o[0].name+"",_,b,i,p,u,$,q,z=o[0].name+"",F,te,I,P,K,T,Q,g,H,le,U,E,se,G,j=o[0].name+"",J,ae,oe,D,V,B,X,S,Y,M,Z,C,R,v=[],ne=new Map,ie,A,h=[],ce=new Map,y;P=new De({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${o[3]}'); diff --git a/ui/dist/assets/RequestPasswordResetDocs-e3555e96.js b/ui/dist/assets/RequestPasswordResetDocs-2178c9c8.js similarity index 97% rename from ui/dist/assets/RequestPasswordResetDocs-e3555e96.js rename to ui/dist/assets/RequestPasswordResetDocs-2178c9c8.js index f6766cebf..0a0cdf43e 100644 --- a/ui/dist/assets/RequestPasswordResetDocs-e3555e96.js +++ b/ui/dist/assets/RequestPasswordResetDocs-2178c9c8.js @@ -1,4 +1,4 @@ -import{S as Pe,i as $e,s as qe,e as r,w as h,b as v,c as ve,f as b,g as d,h as n,m as we,x as L,N as ue,P as ge,k as ye,Q as Re,n as Be,t as Z,a as x,o as f,d as he,T as Ce,C as Se,p as Te,r as N,u as Me,M as Ae}from"./index-c3cca8a1.js";import{S as Ue}from"./SdkTabs-4e51916e.js";function me(a,s,l){const o=a.slice();return o[5]=s[l],o}function be(a,s,l){const o=a.slice();return o[5]=s[l],o}function _e(a,s){let l,o=s[5].code+"",_,m,i,p;function u(){return s[4](s[5])}return{key:a,first:null,c(){l=r("button"),_=h(o),m=v(),b(l,"class","tab-item"),N(l,"active",s[1]===s[5].code),this.first=l},m(P,$){d(P,l,$),n(l,_),n(l,m),i||(p=Me(l,"click",u),i=!0)},p(P,$){s=P,$&4&&o!==(o=s[5].code+"")&&L(_,o),$&6&&N(l,"active",s[1]===s[5].code)},d(P){P&&f(l),i=!1,p()}}}function ke(a,s){let l,o,_,m;return o=new Ae({props:{content:s[5].body}}),{key:a,first:null,c(){l=r("div"),ve(o.$$.fragment),_=v(),b(l,"class","tab-item"),N(l,"active",s[1]===s[5].code),this.first=l},m(i,p){d(i,l,p),we(o,l,null),n(l,_),m=!0},p(i,p){s=i;const u={};p&4&&(u.content=s[5].body),o.$set(u),(!m||p&6)&&N(l,"active",s[1]===s[5].code)},i(i){m||(Z(o.$$.fragment,i),m=!0)},o(i){x(o.$$.fragment,i),m=!1},d(i){i&&f(l),he(o)}}}function je(a){var re,de;let s,l,o=a[0].name+"",_,m,i,p,u,P,$,D=a[0].name+"",O,ee,Q,q,z,B,G,g,H,te,E,C,se,J,F=a[0].name+"",K,le,V,S,W,T,X,M,Y,y,A,w=[],oe=new Map,ae,U,k=[],ne=new Map,R;q=new Ue({props:{js:` +import{S as Pe,i as $e,s as qe,e as r,w as h,b as v,c as ve,f as b,g as d,h as n,m as we,x as L,N as ue,P as ge,k as ye,Q as Re,n as Be,t as Z,a as x,o as f,d as he,T as Ce,C as Se,p as Te,r as N,u as Me,M as Ae}from"./index-058d72e8.js";import{S as Ue}from"./SdkTabs-f9f405f6.js";function me(a,s,l){const o=a.slice();return o[5]=s[l],o}function be(a,s,l){const o=a.slice();return o[5]=s[l],o}function _e(a,s){let l,o=s[5].code+"",_,m,i,p;function u(){return s[4](s[5])}return{key:a,first:null,c(){l=r("button"),_=h(o),m=v(),b(l,"class","tab-item"),N(l,"active",s[1]===s[5].code),this.first=l},m(P,$){d(P,l,$),n(l,_),n(l,m),i||(p=Me(l,"click",u),i=!0)},p(P,$){s=P,$&4&&o!==(o=s[5].code+"")&&L(_,o),$&6&&N(l,"active",s[1]===s[5].code)},d(P){P&&f(l),i=!1,p()}}}function ke(a,s){let l,o,_,m;return o=new Ae({props:{content:s[5].body}}),{key:a,first:null,c(){l=r("div"),ve(o.$$.fragment),_=v(),b(l,"class","tab-item"),N(l,"active",s[1]===s[5].code),this.first=l},m(i,p){d(i,l,p),we(o,l,null),n(l,_),m=!0},p(i,p){s=i;const u={};p&4&&(u.content=s[5].body),o.$set(u),(!m||p&6)&&N(l,"active",s[1]===s[5].code)},i(i){m||(Z(o.$$.fragment,i),m=!0)},o(i){x(o.$$.fragment,i),m=!1},d(i){i&&f(l),he(o)}}}function je(a){var re,de;let s,l,o=a[0].name+"",_,m,i,p,u,P,$,D=a[0].name+"",O,ee,Q,q,z,B,G,g,H,te,E,C,se,J,F=a[0].name+"",K,le,V,S,W,T,X,M,Y,y,A,w=[],oe=new Map,ae,U,k=[],ne=new Map,R;q=new Ue({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${a[3]}'); diff --git a/ui/dist/assets/RequestVerificationDocs-d2ea1985.js b/ui/dist/assets/RequestVerificationDocs-a2f4a405.js similarity index 97% rename from ui/dist/assets/RequestVerificationDocs-d2ea1985.js rename to ui/dist/assets/RequestVerificationDocs-a2f4a405.js index 9ef0ba9f1..aff9edb7f 100644 --- a/ui/dist/assets/RequestVerificationDocs-d2ea1985.js +++ b/ui/dist/assets/RequestVerificationDocs-a2f4a405.js @@ -1,4 +1,4 @@ -import{S as qe,i as we,s as Pe,e as r,w as $,b as v,c as ve,f as b,g as f,h as i,m as he,x as I,N as me,P as ge,k as ye,Q as Be,n as Ce,t as Z,a as x,o as u,d as $e,T as Se,C as Te,p as Me,r as L,u as Ve,M as Re}from"./index-c3cca8a1.js";import{S as Ae}from"./SdkTabs-4e51916e.js";function pe(a,l,s){const o=a.slice();return o[5]=l[s],o}function be(a,l,s){const o=a.slice();return o[5]=l[s],o}function _e(a,l){let s,o=l[5].code+"",_,p,n,d;function m(){return l[4](l[5])}return{key:a,first:null,c(){s=r("button"),_=$(o),p=v(),b(s,"class","tab-item"),L(s,"active",l[1]===l[5].code),this.first=s},m(q,w){f(q,s,w),i(s,_),i(s,p),n||(d=Ve(s,"click",m),n=!0)},p(q,w){l=q,w&4&&o!==(o=l[5].code+"")&&I(_,o),w&6&&L(s,"active",l[1]===l[5].code)},d(q){q&&u(s),n=!1,d()}}}function ke(a,l){let s,o,_,p;return o=new Re({props:{content:l[5].body}}),{key:a,first:null,c(){s=r("div"),ve(o.$$.fragment),_=v(),b(s,"class","tab-item"),L(s,"active",l[1]===l[5].code),this.first=s},m(n,d){f(n,s,d),he(o,s,null),i(s,_),p=!0},p(n,d){l=n;const m={};d&4&&(m.content=l[5].body),o.$set(m),(!p||d&6)&&L(s,"active",l[1]===l[5].code)},i(n){p||(Z(o.$$.fragment,n),p=!0)},o(n){x(o.$$.fragment,n),p=!1},d(n){n&&u(s),$e(o)}}}function Ue(a){var re,fe;let l,s,o=a[0].name+"",_,p,n,d,m,q,w,j=a[0].name+"",N,ee,O,P,Q,C,z,g,D,te,H,S,le,G,E=a[0].name+"",J,se,K,T,W,M,X,V,Y,y,R,h=[],oe=new Map,ae,A,k=[],ie=new Map,B;P=new Ae({props:{js:` +import{S as qe,i as we,s as Pe,e as r,w as $,b as v,c as ve,f as b,g as f,h as i,m as he,x as I,N as me,P as ge,k as ye,Q as Be,n as Ce,t as Z,a as x,o as u,d as $e,T as Se,C as Te,p as Me,r as L,u as Ve,M as Re}from"./index-058d72e8.js";import{S as Ae}from"./SdkTabs-f9f405f6.js";function pe(a,l,s){const o=a.slice();return o[5]=l[s],o}function be(a,l,s){const o=a.slice();return o[5]=l[s],o}function _e(a,l){let s,o=l[5].code+"",_,p,n,d;function m(){return l[4](l[5])}return{key:a,first:null,c(){s=r("button"),_=$(o),p=v(),b(s,"class","tab-item"),L(s,"active",l[1]===l[5].code),this.first=s},m(q,w){f(q,s,w),i(s,_),i(s,p),n||(d=Ve(s,"click",m),n=!0)},p(q,w){l=q,w&4&&o!==(o=l[5].code+"")&&I(_,o),w&6&&L(s,"active",l[1]===l[5].code)},d(q){q&&u(s),n=!1,d()}}}function ke(a,l){let s,o,_,p;return o=new Re({props:{content:l[5].body}}),{key:a,first:null,c(){s=r("div"),ve(o.$$.fragment),_=v(),b(s,"class","tab-item"),L(s,"active",l[1]===l[5].code),this.first=s},m(n,d){f(n,s,d),he(o,s,null),i(s,_),p=!0},p(n,d){l=n;const m={};d&4&&(m.content=l[5].body),o.$set(m),(!p||d&6)&&L(s,"active",l[1]===l[5].code)},i(n){p||(Z(o.$$.fragment,n),p=!0)},o(n){x(o.$$.fragment,n),p=!1},d(n){n&&u(s),$e(o)}}}function Ue(a){var re,fe;let l,s,o=a[0].name+"",_,p,n,d,m,q,w,j=a[0].name+"",N,ee,O,P,Q,C,z,g,D,te,H,S,le,G,E=a[0].name+"",J,se,K,T,W,M,X,V,Y,y,R,h=[],oe=new Map,ae,A,k=[],ie=new Map,B;P=new Ae({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${a[3]}'); diff --git a/ui/dist/assets/SdkTabs-4e51916e.js b/ui/dist/assets/SdkTabs-f9f405f6.js similarity index 96% rename from ui/dist/assets/SdkTabs-4e51916e.js rename to ui/dist/assets/SdkTabs-f9f405f6.js index d53ae91f7..f294153a6 100644 --- a/ui/dist/assets/SdkTabs-4e51916e.js +++ b/ui/dist/assets/SdkTabs-f9f405f6.js @@ -1 +1 @@ -import{S as q,i as B,s as F,e as v,b as j,f as h,g as y,h as m,N as C,P as J,k as Q,Q as Y,n as z,t as N,a as P,o as w,w as E,r as S,u as A,x as R,M as G,c as H,m as L,d as O}from"./index-c3cca8a1.js";function D(o,e,l){const s=o.slice();return s[6]=e[l],s}function K(o,e,l){const s=o.slice();return s[6]=e[l],s}function M(o,e){let l,s,g=e[6].title+"",r,i,n,k;function c(){return e[5](e[6])}return{key:o,first:null,c(){l=v("button"),s=v("div"),r=E(g),i=j(),h(s,"class","txt"),h(l,"class","tab-item svelte-1maocj6"),S(l,"active",e[1]===e[6].language),this.first=l},m(_,f){y(_,l,f),m(l,s),m(s,r),m(l,i),n||(k=A(l,"click",c),n=!0)},p(_,f){e=_,f&4&&g!==(g=e[6].title+"")&&R(r,g),f&6&&S(l,"active",e[1]===e[6].language)},d(_){_&&w(l),n=!1,k()}}}function T(o,e){let l,s,g,r,i,n,k=e[6].title+"",c,_,f,p,d;return s=new G({props:{language:e[6].language,content:e[6].content}}),{key:o,first:null,c(){l=v("div"),H(s.$$.fragment),g=j(),r=v("div"),i=v("em"),n=v("a"),c=E(k),_=E(" SDK"),p=j(),h(n,"href",f=e[6].url),h(n,"target","_blank"),h(n,"rel","noopener noreferrer"),h(i,"class","txt-sm txt-hint"),h(r,"class","txt-right"),h(l,"class","tab-item svelte-1maocj6"),S(l,"active",e[1]===e[6].language),this.first=l},m(b,t){y(b,l,t),L(s,l,null),m(l,g),m(l,r),m(r,i),m(i,n),m(n,c),m(n,_),m(l,p),d=!0},p(b,t){e=b;const a={};t&4&&(a.language=e[6].language),t&4&&(a.content=e[6].content),s.$set(a),(!d||t&4)&&k!==(k=e[6].title+"")&&R(c,k),(!d||t&4&&f!==(f=e[6].url))&&h(n,"href",f),(!d||t&6)&&S(l,"active",e[1]===e[6].language)},i(b){d||(N(s.$$.fragment,b),d=!0)},o(b){P(s.$$.fragment,b),d=!1},d(b){b&&w(l),O(s)}}}function U(o){let e,l,s=[],g=new Map,r,i,n=[],k=new Map,c,_,f=o[2];const p=t=>t[6].language;for(let t=0;tt[6].language;for(let t=0;tl(1,n=c.language);return o.$$set=c=>{"class"in c&&l(0,g=c.class),"js"in c&&l(3,r=c.js),"dart"in c&&l(4,i=c.dart)},o.$$.update=()=>{o.$$.dirty&2&&n&&localStorage.setItem(I,n),o.$$.dirty&24&&l(2,s=[{title:"JavaScript",language:"javascript",content:r,url:"https://github.com/pocketbase/js-sdk"},{title:"Dart",language:"dart",content:i,url:"https://github.com/pocketbase/dart-sdk"}])},[g,n,s,r,i,k]}class X extends q{constructor(e){super(),B(this,e,V,U,F,{class:0,js:3,dart:4})}}export{X as S}; +import{S as q,i as B,s as F,e as v,b as j,f as h,g as y,h as m,N as C,P as J,k as Q,Q as Y,n as z,t as N,a as P,o as w,w as E,r as S,u as A,x as R,M as G,c as H,m as L,d as O}from"./index-058d72e8.js";function D(o,e,l){const s=o.slice();return s[6]=e[l],s}function K(o,e,l){const s=o.slice();return s[6]=e[l],s}function M(o,e){let l,s,g=e[6].title+"",r,i,n,k;function c(){return e[5](e[6])}return{key:o,first:null,c(){l=v("button"),s=v("div"),r=E(g),i=j(),h(s,"class","txt"),h(l,"class","tab-item svelte-1maocj6"),S(l,"active",e[1]===e[6].language),this.first=l},m(_,f){y(_,l,f),m(l,s),m(s,r),m(l,i),n||(k=A(l,"click",c),n=!0)},p(_,f){e=_,f&4&&g!==(g=e[6].title+"")&&R(r,g),f&6&&S(l,"active",e[1]===e[6].language)},d(_){_&&w(l),n=!1,k()}}}function T(o,e){let l,s,g,r,i,n,k=e[6].title+"",c,_,f,p,d;return s=new G({props:{language:e[6].language,content:e[6].content}}),{key:o,first:null,c(){l=v("div"),H(s.$$.fragment),g=j(),r=v("div"),i=v("em"),n=v("a"),c=E(k),_=E(" SDK"),p=j(),h(n,"href",f=e[6].url),h(n,"target","_blank"),h(n,"rel","noopener noreferrer"),h(i,"class","txt-sm txt-hint"),h(r,"class","txt-right"),h(l,"class","tab-item svelte-1maocj6"),S(l,"active",e[1]===e[6].language),this.first=l},m(b,t){y(b,l,t),L(s,l,null),m(l,g),m(l,r),m(r,i),m(i,n),m(n,c),m(n,_),m(l,p),d=!0},p(b,t){e=b;const a={};t&4&&(a.language=e[6].language),t&4&&(a.content=e[6].content),s.$set(a),(!d||t&4)&&k!==(k=e[6].title+"")&&R(c,k),(!d||t&4&&f!==(f=e[6].url))&&h(n,"href",f),(!d||t&6)&&S(l,"active",e[1]===e[6].language)},i(b){d||(N(s.$$.fragment,b),d=!0)},o(b){P(s.$$.fragment,b),d=!1},d(b){b&&w(l),O(s)}}}function U(o){let e,l,s=[],g=new Map,r,i,n=[],k=new Map,c,_,f=o[2];const p=t=>t[6].language;for(let t=0;tt[6].language;for(let t=0;tl(1,n=c.language);return o.$$set=c=>{"class"in c&&l(0,g=c.class),"js"in c&&l(3,r=c.js),"dart"in c&&l(4,i=c.dart)},o.$$.update=()=>{o.$$.dirty&2&&n&&localStorage.setItem(I,n),o.$$.dirty&24&&l(2,s=[{title:"JavaScript",language:"javascript",content:r,url:"https://github.com/pocketbase/js-sdk"},{title:"Dart",language:"dart",content:i,url:"https://github.com/pocketbase/dart-sdk"}])},[g,n,s,r,i,k]}class X extends q{constructor(e){super(),B(this,e,V,U,F,{class:0,js:3,dart:4})}}export{X as S}; diff --git a/ui/dist/assets/UnlinkExternalAuthDocs-2be28d7f.js b/ui/dist/assets/UnlinkExternalAuthDocs-e63af9bf.js similarity index 98% rename from ui/dist/assets/UnlinkExternalAuthDocs-2be28d7f.js rename to ui/dist/assets/UnlinkExternalAuthDocs-e63af9bf.js index 2d9a02cde..64622fac8 100644 --- a/ui/dist/assets/UnlinkExternalAuthDocs-2be28d7f.js +++ b/ui/dist/assets/UnlinkExternalAuthDocs-e63af9bf.js @@ -1,4 +1,4 @@ -import{S as qe,i as Me,s as De,e as i,w as v,b as h,c as Se,f as m,g as d,h as s,m as Be,x as I,N as Te,P as Oe,k as We,Q as ze,n as He,t as le,a as oe,o as u,d as Ue,T as Le,C as je,p as Ie,r as N,u as Ne,M as Re}from"./index-c3cca8a1.js";import{S as Ke}from"./SdkTabs-4e51916e.js";function ye(n,l,o){const a=n.slice();return a[5]=l[o],a}function Ae(n,l,o){const a=n.slice();return a[5]=l[o],a}function Ce(n,l){let o,a=l[5].code+"",_,b,c,p;function f(){return l[4](l[5])}return{key:n,first:null,c(){o=i("button"),_=v(a),b=h(),m(o,"class","tab-item"),N(o,"active",l[1]===l[5].code),this.first=o},m($,P){d($,o,P),s(o,_),s(o,b),c||(p=Ne(o,"click",f),c=!0)},p($,P){l=$,P&4&&a!==(a=l[5].code+"")&&I(_,a),P&6&&N(o,"active",l[1]===l[5].code)},d($){$&&u(o),c=!1,p()}}}function Ee(n,l){let o,a,_,b;return a=new Re({props:{content:l[5].body}}),{key:n,first:null,c(){o=i("div"),Se(a.$$.fragment),_=h(),m(o,"class","tab-item"),N(o,"active",l[1]===l[5].code),this.first=o},m(c,p){d(c,o,p),Be(a,o,null),s(o,_),b=!0},p(c,p){l=c;const f={};p&4&&(f.content=l[5].body),a.$set(f),(!b||p&6)&&N(o,"active",l[1]===l[5].code)},i(c){b||(le(a.$$.fragment,c),b=!0)},o(c){oe(a.$$.fragment,c),b=!1},d(c){c&&u(o),Ue(a)}}}function Qe(n){var he,_e,ke,ve;let l,o,a=n[0].name+"",_,b,c,p,f,$,P,O=n[0].name+"",R,se,ae,K,Q,y,F,E,G,w,W,ne,z,T,ie,J,H=n[0].name+"",V,ce,X,re,Y,de,L,Z,S,x,B,ee,U,te,A,q,g=[],ue=new Map,pe,M,k=[],fe=new Map,C;y=new Ke({props:{js:` +import{S as qe,i as Me,s as De,e as i,w as v,b as h,c as Se,f as m,g as d,h as s,m as Be,x as I,N as Te,P as Oe,k as We,Q as ze,n as He,t as le,a as oe,o as u,d as Ue,T as Le,C as je,p as Ie,r as N,u as Ne,M as Re}from"./index-058d72e8.js";import{S as Ke}from"./SdkTabs-f9f405f6.js";function ye(n,l,o){const a=n.slice();return a[5]=l[o],a}function Ae(n,l,o){const a=n.slice();return a[5]=l[o],a}function Ce(n,l){let o,a=l[5].code+"",_,b,c,p;function f(){return l[4](l[5])}return{key:n,first:null,c(){o=i("button"),_=v(a),b=h(),m(o,"class","tab-item"),N(o,"active",l[1]===l[5].code),this.first=o},m($,P){d($,o,P),s(o,_),s(o,b),c||(p=Ne(o,"click",f),c=!0)},p($,P){l=$,P&4&&a!==(a=l[5].code+"")&&I(_,a),P&6&&N(o,"active",l[1]===l[5].code)},d($){$&&u(o),c=!1,p()}}}function Ee(n,l){let o,a,_,b;return a=new Re({props:{content:l[5].body}}),{key:n,first:null,c(){o=i("div"),Se(a.$$.fragment),_=h(),m(o,"class","tab-item"),N(o,"active",l[1]===l[5].code),this.first=o},m(c,p){d(c,o,p),Be(a,o,null),s(o,_),b=!0},p(c,p){l=c;const f={};p&4&&(f.content=l[5].body),a.$set(f),(!b||p&6)&&N(o,"active",l[1]===l[5].code)},i(c){b||(le(a.$$.fragment,c),b=!0)},o(c){oe(a.$$.fragment,c),b=!1},d(c){c&&u(o),Ue(a)}}}function Qe(n){var he,_e,ke,ve;let l,o,a=n[0].name+"",_,b,c,p,f,$,P,O=n[0].name+"",R,se,ae,K,Q,y,F,E,G,w,W,ne,z,T,ie,J,H=n[0].name+"",V,ce,X,re,Y,de,L,Z,S,x,B,ee,U,te,A,q,g=[],ue=new Map,pe,M,k=[],fe=new Map,C;y=new Ke({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${n[3]}'); diff --git a/ui/dist/assets/UpdateApiDocs-b6998bd3.js b/ui/dist/assets/UpdateApiDocs-4676a3d3.js similarity index 98% rename from ui/dist/assets/UpdateApiDocs-b6998bd3.js rename to ui/dist/assets/UpdateApiDocs-4676a3d3.js index 9c39c01ea..8c83f4605 100644 --- a/ui/dist/assets/UpdateApiDocs-b6998bd3.js +++ b/ui/dist/assets/UpdateApiDocs-4676a3d3.js @@ -1,4 +1,4 @@ -import{S as $t,i as Ot,s as Mt,C as E,M as St,e as r,w as y,b as m,c as be,f as T,g as a,h as i,m as me,x as U,N as Ne,P as mt,k as qt,Q as Dt,n as Ht,t as de,a as re,o,d as _e,T as Pt,p as Rt,r as ye,u as Lt,y as X}from"./index-c3cca8a1.js";import{S as Ft}from"./SdkTabs-4e51916e.js";import{F as At}from"./FieldsQueryParam-7f27fd99.js";function _t(f,t,l){const s=f.slice();return s[7]=t[l],s}function yt(f,t,l){const s=f.slice();return s[7]=t[l],s}function kt(f,t,l){const s=f.slice();return s[12]=t[l],s}function ht(f){let t;return{c(){t=r("p"),t.innerHTML="Requires admin Authorization:TOKEN header",T(t,"class","txt-hint txt-sm txt-right")},m(l,s){a(l,t,s)},d(l){l&&o(t)}}}function vt(f){let t,l,s,b,u,d,p,k,C,w,$,P,F,j,O,g,A;return{c(){t=r("tr"),t.innerHTML='Auth fields',l=m(),s=r("tr"),s.innerHTML=`
Optional +import{S as $t,i as Ot,s as Mt,C as E,M as St,e as r,w as y,b as m,c as be,f as T,g as a,h as i,m as me,x as U,N as Ne,P as mt,k as qt,Q as Dt,n as Ht,t as de,a as re,o,d as _e,T as Pt,p as Rt,r as ye,u as Lt,y as X}from"./index-058d72e8.js";import{S as Ft}from"./SdkTabs-f9f405f6.js";import{F as At}from"./FieldsQueryParam-2bcd23bc.js";function _t(f,t,l){const s=f.slice();return s[7]=t[l],s}function yt(f,t,l){const s=f.slice();return s[7]=t[l],s}function kt(f,t,l){const s=f.slice();return s[12]=t[l],s}function ht(f){let t;return{c(){t=r("p"),t.innerHTML="Requires admin Authorization:TOKEN header",T(t,"class","txt-hint txt-sm txt-right")},m(l,s){a(l,t,s)},d(l){l&&o(t)}}}function vt(f){let t,l,s,b,u,d,p,k,C,w,$,P,F,j,O,g,A;return{c(){t=r("tr"),t.innerHTML='Auth fields',l=m(),s=r("tr"),s.innerHTML=`
Optional username
String The username of the auth record.`,b=m(),u=r("tr"),u.innerHTML=`
Optional diff --git a/ui/dist/assets/ViewApiDocs-16384cfd.js b/ui/dist/assets/ViewApiDocs-b8c8d6b0.js similarity index 97% rename from ui/dist/assets/ViewApiDocs-16384cfd.js rename to ui/dist/assets/ViewApiDocs-b8c8d6b0.js index f0285edb6..6a5861c2a 100644 --- a/ui/dist/assets/ViewApiDocs-16384cfd.js +++ b/ui/dist/assets/ViewApiDocs-b8c8d6b0.js @@ -1,4 +1,4 @@ -import{S as tt,i as lt,s as st,M as et,e as o,w as b,b as u,c as W,f as _,g as r,h as l,m as X,x as ve,N as Ge,P as nt,k as ot,Q as it,n as at,t as U,a as j,o as d,d as Y,T as rt,C as Je,p as dt,r as Z,u as ct}from"./index-c3cca8a1.js";import{S as ft}from"./SdkTabs-4e51916e.js";import{F as pt}from"./FieldsQueryParam-7f27fd99.js";function Ke(i,s,n){const a=i.slice();return a[6]=s[n],a}function We(i,s,n){const a=i.slice();return a[6]=s[n],a}function Xe(i){let s;return{c(){s=o("p"),s.innerHTML="Requires admin Authorization:TOKEN header",_(s,"class","txt-hint txt-sm txt-right")},m(n,a){r(n,s,a)},d(n){n&&d(s)}}}function Ye(i,s){let n,a=s[6].code+"",w,c,f,m;function F(){return s[5](s[6])}return{key:i,first:null,c(){n=o("button"),w=b(a),c=u(),_(n,"class","tab-item"),Z(n,"active",s[2]===s[6].code),this.first=n},m(h,g){r(h,n,g),l(n,w),l(n,c),f||(m=ct(n,"click",F),f=!0)},p(h,g){s=h,g&20&&Z(n,"active",s[2]===s[6].code)},d(h){h&&d(n),f=!1,m()}}}function Ze(i,s){let n,a,w,c;return a=new et({props:{content:s[6].body}}),{key:i,first:null,c(){n=o("div"),W(a.$$.fragment),w=u(),_(n,"class","tab-item"),Z(n,"active",s[2]===s[6].code),this.first=n},m(f,m){r(f,n,m),X(a,n,null),l(n,w),c=!0},p(f,m){s=f,(!c||m&20)&&Z(n,"active",s[2]===s[6].code)},i(f){c||(U(a.$$.fragment,f),c=!0)},o(f){j(a.$$.fragment,f),c=!1},d(f){f&&d(n),Y(a)}}}function ut(i){var Ue,je;let s,n,a=i[0].name+"",w,c,f,m,F,h,g,V=i[0].name+"",ee,$e,te,R,le,M,se,y,z,we,G,E,ye,ne,J=i[0].name+"",oe,Ce,ie,Fe,ae,x,re,A,de,I,ce,O,fe,ge,q,P,pe,Re,ue,Oe,k,Pe,S,Te,De,Ee,me,Se,be,Be,Me,xe,_e,Ae,Ie,B,ke,H,he,T,L,C=[],qe=new Map,He,N,v=[],Le=new Map,D;R=new ft({props:{js:` +import{S as tt,i as lt,s as st,M as et,e as o,w as b,b as u,c as W,f as _,g as r,h as l,m as X,x as ve,N as Ge,P as nt,k as ot,Q as it,n as at,t as U,a as j,o as d,d as Y,T as rt,C as Je,p as dt,r as Z,u as ct}from"./index-058d72e8.js";import{S as ft}from"./SdkTabs-f9f405f6.js";import{F as pt}from"./FieldsQueryParam-2bcd23bc.js";function Ke(i,s,n){const a=i.slice();return a[6]=s[n],a}function We(i,s,n){const a=i.slice();return a[6]=s[n],a}function Xe(i){let s;return{c(){s=o("p"),s.innerHTML="Requires admin Authorization:TOKEN header",_(s,"class","txt-hint txt-sm txt-right")},m(n,a){r(n,s,a)},d(n){n&&d(s)}}}function Ye(i,s){let n,a=s[6].code+"",w,c,f,m;function F(){return s[5](s[6])}return{key:i,first:null,c(){n=o("button"),w=b(a),c=u(),_(n,"class","tab-item"),Z(n,"active",s[2]===s[6].code),this.first=n},m(h,g){r(h,n,g),l(n,w),l(n,c),f||(m=ct(n,"click",F),f=!0)},p(h,g){s=h,g&20&&Z(n,"active",s[2]===s[6].code)},d(h){h&&d(n),f=!1,m()}}}function Ze(i,s){let n,a,w,c;return a=new et({props:{content:s[6].body}}),{key:i,first:null,c(){n=o("div"),W(a.$$.fragment),w=u(),_(n,"class","tab-item"),Z(n,"active",s[2]===s[6].code),this.first=n},m(f,m){r(f,n,m),X(a,n,null),l(n,w),c=!0},p(f,m){s=f,(!c||m&20)&&Z(n,"active",s[2]===s[6].code)},i(f){c||(U(a.$$.fragment,f),c=!0)},o(f){j(a.$$.fragment,f),c=!1},d(f){f&&d(n),Y(a)}}}function ut(i){var Ue,je;let s,n,a=i[0].name+"",w,c,f,m,F,h,g,V=i[0].name+"",ee,$e,te,R,le,M,se,y,z,we,G,E,ye,ne,J=i[0].name+"",oe,Ce,ie,Fe,ae,x,re,A,de,I,ce,O,fe,ge,q,P,pe,Re,ue,Oe,k,Pe,S,Te,De,Ee,me,Se,be,Be,Me,xe,_e,Ae,Ie,B,ke,H,he,T,L,C=[],qe=new Map,He,N,v=[],Le=new Map,D;R=new ft({props:{js:` import PocketBase from 'pocketbase'; const pb = new PocketBase('${i[3]}'); diff --git a/ui/dist/assets/index-c3cca8a1.js b/ui/dist/assets/index-058d72e8.js similarity index 99% rename from ui/dist/assets/index-c3cca8a1.js rename to ui/dist/assets/index-058d72e8.js index 0c9a3ebf2..bcd020bfb 100644 --- a/ui/dist/assets/index-c3cca8a1.js +++ b/ui/dist/assets/index-058d72e8.js @@ -14,7 +14,7 @@ `}}let na,Yi;const ia="app-tooltip";function Xu(n){return typeof n=="string"?{text:n,position:"bottom",hideOnClick:null}:n||{}}function Ni(){return Yi=Yi||document.querySelector("."+ia),Yi||(Yi=document.createElement("div"),Yi.classList.add(ia),document.body.appendChild(Yi)),Yi}function yb(n,e){let t=Ni();if(!t.classList.contains("active")||!(e!=null&&e.text)){sa();return}t.textContent=e.text,t.className=ia+" active",e.class&&t.classList.add(e.class),e.position&&t.classList.add(e.position),t.style.top="0px",t.style.left="0px";let i=t.offsetHeight,s=t.offsetWidth,l=n.getBoundingClientRect(),o=0,r=0,a=5;e.position=="left"?(o=l.top+l.height/2-i/2,r=l.left-s-a):e.position=="right"?(o=l.top+l.height/2-i/2,r=l.right+a):e.position=="top"?(o=l.top-i-a,r=l.left+l.width/2-s/2):e.position=="top-left"?(o=l.top-i-a,r=l.left):e.position=="top-right"?(o=l.top-i-a,r=l.right-s):e.position=="bottom-left"?(o=l.top+l.height+a,r=l.left):e.position=="bottom-right"?(o=l.top+l.height+a,r=l.right-s):(o=l.top+l.height+a,r=l.left+l.width/2-s/2),r+s>document.documentElement.clientWidth&&(r=document.documentElement.clientWidth-s),r=r>=0?r:0,o+i>document.documentElement.clientHeight&&(o=document.documentElement.clientHeight-i),o=o>=0?o:0,t.style.top=o+"px",t.style.left=r+"px"}function sa(){clearTimeout(na),Ni().classList.remove("active"),Ni().activeNode=void 0}function zy(n,e){Ni().activeNode=n,clearTimeout(na),na=setTimeout(()=>{Ni().classList.add("active"),yb(n,e)},isNaN(e.delay)?0:e.delay)}function He(n,e){let t=Xu(e);function i(){zy(n,t)}function s(){sa()}return n.addEventListener("mouseenter",i),n.addEventListener("mouseleave",s),n.addEventListener("blur",s),(t.hideOnClick===!0||t.hideOnClick===null&&B.isFocusable(n))&&n.addEventListener("click",s),Ni(),{update(l){var o,r;t=Xu(l),(r=(o=Ni())==null?void 0:o.activeNode)!=null&&r.contains(n)&&yb(n,t)},destroy(){var l,o;(o=(l=Ni())==null?void 0:l.activeNode)!=null&&o.contains(n)&&sa(),n.removeEventListener("mouseenter",i),n.removeEventListener("mouseleave",s),n.removeEventListener("blur",s),n.removeEventListener("click",s)}}}function Qu(n,e,t){const i=n.slice();return i[12]=e[t],i}const Hy=n=>({}),xu=n=>({uniqueId:n[4]});function By(n){let e,t,i=n[3],s=[];for(let o=0;oI(s[o],1,1,()=>{s[o]=null});return{c(){for(let o=0;o{l&&(s||(s=je(t,Kt,{duration:150,start:.7},!0)),s.run(1))}),l=!0)},o(a){a&&(s||(s=je(t,Kt,{duration:150,start:.7},!1)),s.run(0)),l=!1},d(a){a&&k(e),a&&s&&s.end(),o=!1,r()}}}function ef(n){let e,t,i=So(n[12])+"",s,l,o,r;return{c(){e=v("div"),t=v("pre"),s=U(i),l=E(),p(e,"class","help-block help-block-error")},m(a,u){w(a,e,u),g(e,t),g(t,s),g(e,l),r=!0},p(a,u){(!r||u&8)&&i!==(i=So(a[12])+"")&&se(s,i)},i(a){r||(a&&Qe(()=>{r&&(o||(o=je(e,ot,{duration:150},!0)),o.run(1))}),r=!0)},o(a){a&&(o||(o=je(e,ot,{duration:150},!1)),o.run(0)),r=!1},d(a){a&&k(e),a&&o&&o.end()}}}function Wy(n){let e,t,i,s,l,o,r;const a=n[9].default,u=yt(a,n,n[8],xu),f=[Uy,By],c=[];function d(m,_){return m[0]&&m[3].length?0:1}return i=d(n),s=c[i]=f[i](n),{c(){e=v("div"),u&&u.c(),t=E(),s.c(),p(e,"class",n[1]),Q(e,"error",n[3].length)},m(m,_){w(m,e,_),u&&u.m(e,null),g(e,t),c[i].m(e,null),n[11](e),l=!0,o||(r=J(e,"click",n[10]),o=!0)},p(m,[_]){u&&u.p&&(!l||_&256)&&wt(u,a,m,m[8],l?kt(a,m[8],_,Hy):St(m[8]),xu);let h=i;i=d(m),i===h?c[i].p(m,_):(ae(),I(c[h],1,1,()=>{c[h]=null}),ue(),s=c[i],s?s.p(m,_):(s=c[i]=f[i](m),s.c()),A(s,1),s.m(e,null)),(!l||_&2)&&p(e,"class",m[1]),(!l||_&10)&&Q(e,"error",m[3].length)},i(m){l||(A(u,m),A(s),l=!0)},o(m){I(u,m),I(s),l=!1},d(m){m&&k(e),u&&u.d(m),c[i].d(),n[11](null),o=!1,r()}}}const tf="Invalid value";function So(n){return typeof n=="object"?(n==null?void 0:n.message)||(n==null?void 0:n.code)||tf:n||tf}function Yy(n,e,t){let i;Je(n,Si,h=>t(7,i=h));let{$$slots:s={},$$scope:l}=e;const o="field_"+B.randomString(7);let{name:r=""}=e,{inlineError:a=!1}=e,{class:u=void 0}=e,f,c=[];function d(){ai(r)}Gt(()=>(f.addEventListener("input",d),f.addEventListener("change",d),()=>{f.removeEventListener("input",d),f.removeEventListener("change",d)}));function m(h){Ne.call(this,n,h)}function _(h){te[h?"unshift":"push"](()=>{f=h,t(2,f)})}return n.$$set=h=>{"name"in h&&t(5,r=h.name),"inlineError"in h&&t(0,a=h.inlineError),"class"in h&&t(1,u=h.class),"$$scope"in h&&t(8,l=h.$$scope)},n.$$.update=()=>{n.$$.dirty&160&&t(3,c=B.toArray(B.getNestedVal(i,r)))},[a,u,f,c,o,r,d,i,l,s,m,_]}class pe extends ge{constructor(e){super(),_e(this,e,Yy,Wy,me,{name:5,inlineError:0,class:1,changed:6})}get changed(){return this.$$.ctx[6]}}function Ky(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Email"),s=E(),l=v("input"),p(e,"for",i=n[9]),p(l,"type","email"),p(l,"autocomplete","off"),p(l,"id",o=n[9]),l.required=!0,l.autofocus=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0]),l.focus(),r||(a=J(l,"input",n[5]),r=!0)},p(u,f){f&512&&i!==(i=u[9])&&p(e,"for",i),f&512&&o!==(o=u[9])&&p(l,"id",o),f&1&&l.value!==u[0]&&re(l,u[0])},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function Jy(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("label"),t=U("Password"),s=E(),l=v("input"),r=E(),a=v("div"),a.textContent="Minimum 10 characters.",p(e,"for",i=n[9]),p(l,"type","password"),p(l,"autocomplete","new-password"),p(l,"minlength","10"),p(l,"id",o=n[9]),l.required=!0,p(a,"class","help-block")},m(c,d){w(c,e,d),g(e,t),w(c,s,d),w(c,l,d),re(l,n[1]),w(c,r,d),w(c,a,d),u||(f=J(l,"input",n[6]),u=!0)},p(c,d){d&512&&i!==(i=c[9])&&p(e,"for",i),d&512&&o!==(o=c[9])&&p(l,"id",o),d&2&&l.value!==c[1]&&re(l,c[1])},d(c){c&&k(e),c&&k(s),c&&k(l),c&&k(r),c&&k(a),u=!1,f()}}}function Zy(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Password confirm"),s=E(),l=v("input"),p(e,"for",i=n[9]),p(l,"type","password"),p(l,"minlength","10"),p(l,"id",o=n[9]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[2]),r||(a=J(l,"input",n[7]),r=!0)},p(u,f){f&512&&i!==(i=u[9])&&p(e,"for",i),f&512&&o!==(o=u[9])&&p(l,"id",o),f&4&&l.value!==u[2]&&re(l,u[2])},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function Gy(n){let e,t,i,s,l,o,r,a,u,f,c,d,m;return s=new pe({props:{class:"form-field required",name:"email",$$slots:{default:[Ky,({uniqueId:_})=>({9:_}),({uniqueId:_})=>_?512:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:"password",$$slots:{default:[Jy,({uniqueId:_})=>({9:_}),({uniqueId:_})=>_?512:0]},$$scope:{ctx:n}}}),a=new pe({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[Zy,({uniqueId:_})=>({9:_}),({uniqueId:_})=>_?512:0]},$$scope:{ctx:n}}}),{c(){e=v("form"),t=v("div"),t.innerHTML="

Create your first admin account in order to continue

",i=E(),H(s.$$.fragment),l=E(),H(o.$$.fragment),r=E(),H(a.$$.fragment),u=E(),f=v("button"),f.innerHTML=`Create and login - `,p(t,"class","content txt-center m-b-base"),p(f,"type","submit"),p(f,"class","btn btn-lg btn-block btn-next"),Q(f,"btn-disabled",n[3]),Q(f,"btn-loading",n[3]),p(e,"class","block"),p(e,"autocomplete","off")},m(_,h){w(_,e,h),g(e,t),g(e,i),V(s,e,null),g(e,l),V(o,e,null),g(e,r),V(a,e,null),g(e,u),g(e,f),c=!0,d||(m=J(e,"submit",et(n[4])),d=!0)},p(_,[h]){const b={};h&1537&&(b.$$scope={dirty:h,ctx:_}),s.$set(b);const y={};h&1538&&(y.$$scope={dirty:h,ctx:_}),o.$set(y);const S={};h&1540&&(S.$$scope={dirty:h,ctx:_}),a.$set(S),(!c||h&8)&&Q(f,"btn-disabled",_[3]),(!c||h&8)&&Q(f,"btn-loading",_[3])},i(_){c||(A(s.$$.fragment,_),A(o.$$.fragment,_),A(a.$$.fragment,_),c=!0)},o(_){I(s.$$.fragment,_),I(o.$$.fragment,_),I(a.$$.fragment,_),c=!1},d(_){_&&k(e),z(s),z(o),z(a),d=!1,m()}}}function Xy(n,e,t){const i=$t();let s="",l="",o="",r=!1;async function a(){if(!r){t(3,r=!0);try{await ce.admins.create({email:s,password:l,passwordConfirm:o}),await ce.admins.authWithPassword(s,l),i("submit")}catch(d){ce.error(d)}t(3,r=!1)}}function u(){s=this.value,t(0,s)}function f(){l=this.value,t(1,l)}function c(){o=this.value,t(2,o)}return[s,l,o,r,a,u,f,c]}class Qy extends ge{constructor(e){super(),_e(this,e,Xy,Gy,me,{})}}function nf(n){let e,t;return e=new vb({props:{$$slots:{default:[xy]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&9&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function xy(n){let e,t;return e=new Qy({}),e.$on("submit",n[1]),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p:x,i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function ek(n){let e,t,i=n[0]&&nf(n);return{c(){i&&i.c(),e=ye()},m(s,l){i&&i.m(s,l),w(s,e,l),t=!0},p(s,[l]){s[0]?i?(i.p(s,l),l&1&&A(i,1)):(i=nf(s),i.c(),A(i,1),i.m(e.parentNode,e)):i&&(ae(),I(i,1,1,()=>{i=null}),ue())},i(s){t||(A(i),t=!0)},o(s){I(i),t=!1},d(s){i&&i.d(s),s&&k(e)}}}function tk(n,e,t){let i=!1;s();function s(){if(t(0,i=!1),new URLSearchParams(window.location.search).has("installer")){ce.logout(!1),t(0,i=!0);return}ce.authStore.isValid?ji("/collections"):ce.logout()}return[i,async()=>{t(0,i=!1),await fn(),window.location.search=""}]}class nk extends ge{constructor(e){super(),_e(this,e,tk,ek,me,{})}}const Tt=In(""),$o=In(""),As=In(!1);function ik(n){let e,t,i,s;return{c(){e=v("input"),p(e,"type","text"),p(e,"id",n[8]),p(e,"placeholder",t=n[0]||n[1])},m(l,o){w(l,e,o),n[13](e),re(e,n[7]),i||(s=J(e,"input",n[14]),i=!0)},p(l,o){o&3&&t!==(t=l[0]||l[1])&&p(e,"placeholder",t),o&128&&e.value!==l[7]&&re(e,l[7])},i:x,o:x,d(l){l&&k(e),n[13](null),i=!1,s()}}}function sk(n){let e,t,i,s;function l(a){n[12](a)}var o=n[4];function r(a){let u={id:a[8],singleLine:!0,disableRequestKeys:!0,disableIndirectCollectionsKeys:!0,extraAutocompleteKeys:a[3],baseCollection:a[2],placeholder:a[0]||a[1]};return a[7]!==void 0&&(u.value=a[7]),{props:u}}return o&&(e=Rt(o,r(n)),te.push(()=>de(e,"value",l)),e.$on("submit",n[10])),{c(){e&&H(e.$$.fragment),i=ye()},m(a,u){e&&V(e,a,u),w(a,i,u),s=!0},p(a,u){const f={};if(u&8&&(f.extraAutocompleteKeys=a[3]),u&4&&(f.baseCollection=a[2]),u&3&&(f.placeholder=a[0]||a[1]),!t&&u&128&&(t=!0,f.value=a[7],he(()=>t=!1)),u&16&&o!==(o=a[4])){if(e){ae();const c=e;I(c.$$.fragment,1,0,()=>{z(c,1)}),ue()}o?(e=Rt(o,r(a)),te.push(()=>de(e,"value",l)),e.$on("submit",a[10]),H(e.$$.fragment),A(e.$$.fragment,1),V(e,i.parentNode,i)):e=null}else o&&e.$set(f)},i(a){s||(e&&A(e.$$.fragment,a),s=!0)},o(a){e&&I(e.$$.fragment,a),s=!1},d(a){a&&k(i),e&&z(e,a)}}}function sf(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Search',p(e,"type","submit"),p(e,"class","btn btn-expanded btn-sm btn-warning")},m(s,l){w(s,e,l),i=!0},i(s){i||(s&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,x:5},!0)),t.run(1))}),i=!0)},o(s){s&&(t||(t=je(e,fi,{duration:150,x:5},!1)),t.run(0)),i=!1},d(s){s&&k(e),s&&t&&t.end()}}}function lf(n){let e,t,i,s,l;return{c(){e=v("button"),e.innerHTML='Clear',p(e,"type","button"),p(e,"class","btn btn-transparent btn-sm btn-hint p-l-xs p-r-xs m-l-10")},m(o,r){w(o,e,r),i=!0,s||(l=J(e,"click",n[15]),s=!0)},p:x,i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,x:5},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,fi,{duration:150,x:5},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function lk(n){let e,t,i,s,l,o,r,a,u,f,c;const d=[sk,ik],m=[];function _(y,S){return y[4]&&!y[5]?0:1}l=_(n),o=m[l]=d[l](n);let h=(n[0].length||n[7].length)&&n[7]!=n[0]&&sf(),b=(n[0].length||n[7].length)&&lf(n);return{c(){e=v("form"),t=v("label"),i=v("i"),s=E(),o.c(),r=E(),h&&h.c(),a=E(),b&&b.c(),p(i,"class","ri-search-line"),p(t,"for",n[8]),p(t,"class","m-l-10 txt-xl"),p(e,"class","searchbar")},m(y,S){w(y,e,S),g(e,t),g(t,i),g(e,s),m[l].m(e,null),g(e,r),h&&h.m(e,null),g(e,a),b&&b.m(e,null),u=!0,f||(c=[J(e,"click",An(n[11])),J(e,"submit",et(n[10]))],f=!0)},p(y,[S]){let C=l;l=_(y),l===C?m[l].p(y,S):(ae(),I(m[C],1,1,()=>{m[C]=null}),ue(),o=m[l],o?o.p(y,S):(o=m[l]=d[l](y),o.c()),A(o,1),o.m(e,r)),(y[0].length||y[7].length)&&y[7]!=y[0]?h?S&129&&A(h,1):(h=sf(),h.c(),A(h,1),h.m(e,a)):h&&(ae(),I(h,1,1,()=>{h=null}),ue()),y[0].length||y[7].length?b?(b.p(y,S),S&129&&A(b,1)):(b=lf(y),b.c(),A(b,1),b.m(e,null)):b&&(ae(),I(b,1,1,()=>{b=null}),ue())},i(y){u||(A(o),A(h),A(b),u=!0)},o(y){I(o),I(h),I(b),u=!1},d(y){y&&k(e),m[l].d(),h&&h.d(),b&&b.d(),f=!1,Ee(c)}}}function ok(n,e,t){const i=$t(),s="search_"+B.randomString(7);let{value:l=""}=e,{placeholder:o='Search term or filter like created > "2022-01-01"...'}=e,{autocompleteCollection:r=new yn}=e,{extraAutocompleteKeys:a=[]}=e,u,f=!1,c,d="";function m(T=!0){t(7,d=""),T&&(c==null||c.focus()),i("clear")}function _(){t(0,l=d),i("submit",l)}async function h(){u||f||(t(5,f=!0),t(4,u=(await at(()=>import("./FilterAutocompleteInput-7de16238.js"),["./FilterAutocompleteInput-7de16238.js","./index-fd4289fb.js"],import.meta.url)).default),t(5,f=!1))}Gt(()=>{h()});function b(T){Ne.call(this,n,T)}function y(T){d=T,t(7,d),t(0,l)}function S(T){te[T?"unshift":"push"](()=>{c=T,t(6,c)})}function C(){d=this.value,t(7,d),t(0,l)}const $=()=>{m(!1),_()};return n.$$set=T=>{"value"in T&&t(0,l=T.value),"placeholder"in T&&t(1,o=T.placeholder),"autocompleteCollection"in T&&t(2,r=T.autocompleteCollection),"extraAutocompleteKeys"in T&&t(3,a=T.extraAutocompleteKeys)},n.$$.update=()=>{n.$$.dirty&1&&typeof l=="string"&&t(7,d=l)},[l,o,r,a,u,f,c,d,s,m,_,b,y,S,C,$]}class Zo extends ge{constructor(e){super(),_e(this,e,ok,lk,me,{value:0,placeholder:1,autocompleteCollection:2,extraAutocompleteKeys:3})}}function rk(n){let e,t,i,s,l,o;return{c(){e=v("button"),t=v("i"),p(t,"class","ri-refresh-line svelte-1bvelc2"),p(e,"type","button"),p(e,"aria-label","Refresh"),p(e,"class",i="btn btn-transparent btn-circle "+n[1]+" svelte-1bvelc2"),Q(e,"refreshing",n[2])},m(r,a){w(r,e,a),g(e,t),l||(o=[Me(s=He.call(null,e,n[0])),J(e,"click",n[3])],l=!0)},p(r,[a]){a&2&&i!==(i="btn btn-transparent btn-circle "+r[1]+" svelte-1bvelc2")&&p(e,"class",i),s&&jt(s.update)&&a&1&&s.update.call(null,r[0]),a&6&&Q(e,"refreshing",r[2])},i:x,o:x,d(r){r&&k(e),l=!1,Ee(o)}}}function ak(n,e,t){const i=$t();let{tooltip:s={text:"Refresh",position:"right"}}=e,{class:l=""}=e,o=null;function r(){i("refresh");const a=s;t(0,s=null),clearTimeout(o),t(2,o=setTimeout(()=>{t(2,o=null),t(0,s=a)},150))}return Gt(()=>()=>clearTimeout(o)),n.$$set=a=>{"tooltip"in a&&t(0,s=a.tooltip),"class"in a&&t(1,l=a.class)},[s,l,o,r]}class Go extends ge{constructor(e){super(),_e(this,e,ak,rk,me,{tooltip:0,class:1})}}function uk(n){let e,t,i,s,l;const o=n[6].default,r=yt(o,n,n[5],null);return{c(){e=v("th"),r&&r.c(),p(e,"tabindex","0"),p(e,"title",n[2]),p(e,"class",t="col-sort "+n[1]),Q(e,"col-sort-disabled",n[3]),Q(e,"sort-active",n[0]==="-"+n[2]||n[0]==="+"+n[2]),Q(e,"sort-desc",n[0]==="-"+n[2]),Q(e,"sort-asc",n[0]==="+"+n[2])},m(a,u){w(a,e,u),r&&r.m(e,null),i=!0,s||(l=[J(e,"click",n[7]),J(e,"keydown",n[8])],s=!0)},p(a,[u]){r&&r.p&&(!i||u&32)&&wt(r,o,a,a[5],i?kt(o,a[5],u,null):St(a[5]),null),(!i||u&4)&&p(e,"title",a[2]),(!i||u&2&&t!==(t="col-sort "+a[1]))&&p(e,"class",t),(!i||u&10)&&Q(e,"col-sort-disabled",a[3]),(!i||u&7)&&Q(e,"sort-active",a[0]==="-"+a[2]||a[0]==="+"+a[2]),(!i||u&7)&&Q(e,"sort-desc",a[0]==="-"+a[2]),(!i||u&7)&&Q(e,"sort-asc",a[0]==="+"+a[2])},i(a){i||(A(r,a),i=!0)},o(a){I(r,a),i=!1},d(a){a&&k(e),r&&r.d(a),s=!1,Ee(l)}}}function fk(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,{name:o}=e,{sort:r=""}=e,{disable:a=!1}=e;function u(){a||("-"+o===r?t(0,r="+"+o):t(0,r="-"+o))}const f=()=>u(),c=d=>{(d.code==="Enter"||d.code==="Space")&&(d.preventDefault(),u())};return n.$$set=d=>{"class"in d&&t(1,l=d.class),"name"in d&&t(2,o=d.name),"sort"in d&&t(0,r=d.sort),"disable"in d&&t(3,a=d.disable),"$$scope"in d&&t(5,s=d.$$scope)},[r,l,o,a,u,s,i,f,c]}class an extends ge{constructor(e){super(),_e(this,e,fk,uk,me,{class:1,name:2,sort:0,disable:3})}}function ck(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt txt-hint")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function dk(n){let e,t,i,s,l,o,r;return{c(){e=v("div"),t=v("div"),i=U(n[2]),s=E(),l=v("div"),o=U(n[1]),r=U(" UTC"),p(t,"class","date"),p(l,"class","time svelte-zdiknu"),p(e,"class","datetime svelte-zdiknu")},m(a,u){w(a,e,u),g(e,t),g(t,i),g(e,s),g(e,l),g(l,o),g(l,r)},p(a,u){u&4&&se(i,a[2]),u&2&&se(o,a[1])},d(a){a&&k(e)}}}function pk(n){let e;function t(l,o){return l[0]?dk:ck}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,[o]){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},i:x,o:x,d(l){s.d(l),l&&k(e)}}}function mk(n,e,t){let i,s,{date:l=""}=e;return n.$$set=o=>{"date"in o&&t(0,l=o.date)},n.$$.update=()=>{n.$$.dirty&1&&t(2,i=l?l.substring(0,10):null),n.$$.dirty&1&&t(1,s=l?l.substring(10,19):null)},[l,s,i]}class wi extends ge{constructor(e){super(),_e(this,e,mk,pk,me,{date:0})}}const hk=n=>({}),of=n=>({}),_k=n=>({}),rf=n=>({});function gk(n){let e,t,i,s,l,o,r,a;const u=n[5].before,f=yt(u,n,n[4],rf),c=n[5].default,d=yt(c,n,n[4],null),m=n[5].after,_=yt(m,n,n[4],of);return{c(){e=v("div"),f&&f.c(),t=E(),i=v("div"),d&&d.c(),l=E(),_&&_.c(),p(i,"class",s="horizontal-scroller "+n[0]+" "+n[3]+" svelte-wc2j9h"),p(e,"class","horizontal-scroller-wrapper svelte-wc2j9h")},m(h,b){w(h,e,b),f&&f.m(e,null),g(e,t),g(e,i),d&&d.m(i,null),n[6](i),g(e,l),_&&_.m(e,null),o=!0,r||(a=[J(window,"resize",n[1]),J(i,"scroll",n[1])],r=!0)},p(h,[b]){f&&f.p&&(!o||b&16)&&wt(f,u,h,h[4],o?kt(u,h[4],b,_k):St(h[4]),rf),d&&d.p&&(!o||b&16)&&wt(d,c,h,h[4],o?kt(c,h[4],b,null):St(h[4]),null),(!o||b&9&&s!==(s="horizontal-scroller "+h[0]+" "+h[3]+" svelte-wc2j9h"))&&p(i,"class",s),_&&_.p&&(!o||b&16)&&wt(_,m,h,h[4],o?kt(m,h[4],b,hk):St(h[4]),of)},i(h){o||(A(f,h),A(d,h),A(_,h),o=!0)},o(h){I(f,h),I(d,h),I(_,h),o=!1},d(h){h&&k(e),f&&f.d(h),d&&d.d(h),n[6](null),_&&_.d(h),r=!1,Ee(a)}}}function bk(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,o=null,r="",a=null,u;function f(){o&&(clearTimeout(a),a=setTimeout(()=>{const d=o.offsetWidth,m=o.scrollWidth;m-d?(t(3,r="scrollable"),o.scrollLeft===0?t(3,r+=" scroll-start"):o.scrollLeft+d==m&&t(3,r+=" scroll-end")):t(3,r="")},100))}Gt(()=>(f(),u=new MutationObserver(()=>{f()}),u.observe(o,{attributeFilter:["width"],childList:!0,subtree:!0}),()=>{u==null||u.disconnect(),clearTimeout(a)}));function c(d){te[d?"unshift":"push"](()=>{o=d,t(2,o)})}return n.$$set=d=>{"class"in d&&t(0,l=d.class),"$$scope"in d&&t(4,s=d.$$scope)},[l,f,o,r,s,i,c]}class ja extends ge{constructor(e){super(),_e(this,e,bk,gk,me,{class:0,refresh:1})}get refresh(){return this.$$.ctx[1]}}function af(n,e,t){const i=n.slice();return i[23]=e[t],i}function vk(n){let e;return{c(){e=v("div"),e.innerHTML=` + `,p(t,"class","content txt-center m-b-base"),p(f,"type","submit"),p(f,"class","btn btn-lg btn-block btn-next"),Q(f,"btn-disabled",n[3]),Q(f,"btn-loading",n[3]),p(e,"class","block"),p(e,"autocomplete","off")},m(_,h){w(_,e,h),g(e,t),g(e,i),V(s,e,null),g(e,l),V(o,e,null),g(e,r),V(a,e,null),g(e,u),g(e,f),c=!0,d||(m=J(e,"submit",et(n[4])),d=!0)},p(_,[h]){const b={};h&1537&&(b.$$scope={dirty:h,ctx:_}),s.$set(b);const y={};h&1538&&(y.$$scope={dirty:h,ctx:_}),o.$set(y);const S={};h&1540&&(S.$$scope={dirty:h,ctx:_}),a.$set(S),(!c||h&8)&&Q(f,"btn-disabled",_[3]),(!c||h&8)&&Q(f,"btn-loading",_[3])},i(_){c||(A(s.$$.fragment,_),A(o.$$.fragment,_),A(a.$$.fragment,_),c=!0)},o(_){I(s.$$.fragment,_),I(o.$$.fragment,_),I(a.$$.fragment,_),c=!1},d(_){_&&k(e),z(s),z(o),z(a),d=!1,m()}}}function Xy(n,e,t){const i=$t();let s="",l="",o="",r=!1;async function a(){if(!r){t(3,r=!0);try{await ce.admins.create({email:s,password:l,passwordConfirm:o}),await ce.admins.authWithPassword(s,l),i("submit")}catch(d){ce.error(d)}t(3,r=!1)}}function u(){s=this.value,t(0,s)}function f(){l=this.value,t(1,l)}function c(){o=this.value,t(2,o)}return[s,l,o,r,a,u,f,c]}class Qy extends ge{constructor(e){super(),_e(this,e,Xy,Gy,me,{})}}function nf(n){let e,t;return e=new vb({props:{$$slots:{default:[xy]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&9&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function xy(n){let e,t;return e=new Qy({}),e.$on("submit",n[1]),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p:x,i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function ek(n){let e,t,i=n[0]&&nf(n);return{c(){i&&i.c(),e=ye()},m(s,l){i&&i.m(s,l),w(s,e,l),t=!0},p(s,[l]){s[0]?i?(i.p(s,l),l&1&&A(i,1)):(i=nf(s),i.c(),A(i,1),i.m(e.parentNode,e)):i&&(ae(),I(i,1,1,()=>{i=null}),ue())},i(s){t||(A(i),t=!0)},o(s){I(i),t=!1},d(s){i&&i.d(s),s&&k(e)}}}function tk(n,e,t){let i=!1;s();function s(){if(t(0,i=!1),new URLSearchParams(window.location.search).has("installer")){ce.logout(!1),t(0,i=!0);return}ce.authStore.isValid?ji("/collections"):ce.logout()}return[i,async()=>{t(0,i=!1),await fn(),window.location.search=""}]}class nk extends ge{constructor(e){super(),_e(this,e,tk,ek,me,{})}}const Tt=In(""),$o=In(""),As=In(!1);function ik(n){let e,t,i,s;return{c(){e=v("input"),p(e,"type","text"),p(e,"id",n[8]),p(e,"placeholder",t=n[0]||n[1])},m(l,o){w(l,e,o),n[13](e),re(e,n[7]),i||(s=J(e,"input",n[14]),i=!0)},p(l,o){o&3&&t!==(t=l[0]||l[1])&&p(e,"placeholder",t),o&128&&e.value!==l[7]&&re(e,l[7])},i:x,o:x,d(l){l&&k(e),n[13](null),i=!1,s()}}}function sk(n){let e,t,i,s;function l(a){n[12](a)}var o=n[4];function r(a){let u={id:a[8],singleLine:!0,disableRequestKeys:!0,disableIndirectCollectionsKeys:!0,extraAutocompleteKeys:a[3],baseCollection:a[2],placeholder:a[0]||a[1]};return a[7]!==void 0&&(u.value=a[7]),{props:u}}return o&&(e=Rt(o,r(n)),te.push(()=>de(e,"value",l)),e.$on("submit",n[10])),{c(){e&&H(e.$$.fragment),i=ye()},m(a,u){e&&V(e,a,u),w(a,i,u),s=!0},p(a,u){const f={};if(u&8&&(f.extraAutocompleteKeys=a[3]),u&4&&(f.baseCollection=a[2]),u&3&&(f.placeholder=a[0]||a[1]),!t&&u&128&&(t=!0,f.value=a[7],he(()=>t=!1)),u&16&&o!==(o=a[4])){if(e){ae();const c=e;I(c.$$.fragment,1,0,()=>{z(c,1)}),ue()}o?(e=Rt(o,r(a)),te.push(()=>de(e,"value",l)),e.$on("submit",a[10]),H(e.$$.fragment),A(e.$$.fragment,1),V(e,i.parentNode,i)):e=null}else o&&e.$set(f)},i(a){s||(e&&A(e.$$.fragment,a),s=!0)},o(a){e&&I(e.$$.fragment,a),s=!1},d(a){a&&k(i),e&&z(e,a)}}}function sf(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Search',p(e,"type","submit"),p(e,"class","btn btn-expanded btn-sm btn-warning")},m(s,l){w(s,e,l),i=!0},i(s){i||(s&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,x:5},!0)),t.run(1))}),i=!0)},o(s){s&&(t||(t=je(e,fi,{duration:150,x:5},!1)),t.run(0)),i=!1},d(s){s&&k(e),s&&t&&t.end()}}}function lf(n){let e,t,i,s,l;return{c(){e=v("button"),e.innerHTML='Clear',p(e,"type","button"),p(e,"class","btn btn-transparent btn-sm btn-hint p-l-xs p-r-xs m-l-10")},m(o,r){w(o,e,r),i=!0,s||(l=J(e,"click",n[15]),s=!0)},p:x,i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,x:5},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,fi,{duration:150,x:5},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function lk(n){let e,t,i,s,l,o,r,a,u,f,c;const d=[sk,ik],m=[];function _(y,S){return y[4]&&!y[5]?0:1}l=_(n),o=m[l]=d[l](n);let h=(n[0].length||n[7].length)&&n[7]!=n[0]&&sf(),b=(n[0].length||n[7].length)&&lf(n);return{c(){e=v("form"),t=v("label"),i=v("i"),s=E(),o.c(),r=E(),h&&h.c(),a=E(),b&&b.c(),p(i,"class","ri-search-line"),p(t,"for",n[8]),p(t,"class","m-l-10 txt-xl"),p(e,"class","searchbar")},m(y,S){w(y,e,S),g(e,t),g(t,i),g(e,s),m[l].m(e,null),g(e,r),h&&h.m(e,null),g(e,a),b&&b.m(e,null),u=!0,f||(c=[J(e,"click",An(n[11])),J(e,"submit",et(n[10]))],f=!0)},p(y,[S]){let C=l;l=_(y),l===C?m[l].p(y,S):(ae(),I(m[C],1,1,()=>{m[C]=null}),ue(),o=m[l],o?o.p(y,S):(o=m[l]=d[l](y),o.c()),A(o,1),o.m(e,r)),(y[0].length||y[7].length)&&y[7]!=y[0]?h?S&129&&A(h,1):(h=sf(),h.c(),A(h,1),h.m(e,a)):h&&(ae(),I(h,1,1,()=>{h=null}),ue()),y[0].length||y[7].length?b?(b.p(y,S),S&129&&A(b,1)):(b=lf(y),b.c(),A(b,1),b.m(e,null)):b&&(ae(),I(b,1,1,()=>{b=null}),ue())},i(y){u||(A(o),A(h),A(b),u=!0)},o(y){I(o),I(h),I(b),u=!1},d(y){y&&k(e),m[l].d(),h&&h.d(),b&&b.d(),f=!1,Ee(c)}}}function ok(n,e,t){const i=$t(),s="search_"+B.randomString(7);let{value:l=""}=e,{placeholder:o='Search term or filter like created > "2022-01-01"...'}=e,{autocompleteCollection:r=new yn}=e,{extraAutocompleteKeys:a=[]}=e,u,f=!1,c,d="";function m(T=!0){t(7,d=""),T&&(c==null||c.focus()),i("clear")}function _(){t(0,l=d),i("submit",l)}async function h(){u||f||(t(5,f=!0),t(4,u=(await at(()=>import("./FilterAutocompleteInput-ce40744a.js"),["./FilterAutocompleteInput-ce40744a.js","./index-fd4289fb.js"],import.meta.url)).default),t(5,f=!1))}Gt(()=>{h()});function b(T){Ne.call(this,n,T)}function y(T){d=T,t(7,d),t(0,l)}function S(T){te[T?"unshift":"push"](()=>{c=T,t(6,c)})}function C(){d=this.value,t(7,d),t(0,l)}const $=()=>{m(!1),_()};return n.$$set=T=>{"value"in T&&t(0,l=T.value),"placeholder"in T&&t(1,o=T.placeholder),"autocompleteCollection"in T&&t(2,r=T.autocompleteCollection),"extraAutocompleteKeys"in T&&t(3,a=T.extraAutocompleteKeys)},n.$$.update=()=>{n.$$.dirty&1&&typeof l=="string"&&t(7,d=l)},[l,o,r,a,u,f,c,d,s,m,_,b,y,S,C,$]}class Zo extends ge{constructor(e){super(),_e(this,e,ok,lk,me,{value:0,placeholder:1,autocompleteCollection:2,extraAutocompleteKeys:3})}}function rk(n){let e,t,i,s,l,o;return{c(){e=v("button"),t=v("i"),p(t,"class","ri-refresh-line svelte-1bvelc2"),p(e,"type","button"),p(e,"aria-label","Refresh"),p(e,"class",i="btn btn-transparent btn-circle "+n[1]+" svelte-1bvelc2"),Q(e,"refreshing",n[2])},m(r,a){w(r,e,a),g(e,t),l||(o=[Me(s=He.call(null,e,n[0])),J(e,"click",n[3])],l=!0)},p(r,[a]){a&2&&i!==(i="btn btn-transparent btn-circle "+r[1]+" svelte-1bvelc2")&&p(e,"class",i),s&&jt(s.update)&&a&1&&s.update.call(null,r[0]),a&6&&Q(e,"refreshing",r[2])},i:x,o:x,d(r){r&&k(e),l=!1,Ee(o)}}}function ak(n,e,t){const i=$t();let{tooltip:s={text:"Refresh",position:"right"}}=e,{class:l=""}=e,o=null;function r(){i("refresh");const a=s;t(0,s=null),clearTimeout(o),t(2,o=setTimeout(()=>{t(2,o=null),t(0,s=a)},150))}return Gt(()=>()=>clearTimeout(o)),n.$$set=a=>{"tooltip"in a&&t(0,s=a.tooltip),"class"in a&&t(1,l=a.class)},[s,l,o,r]}class Go extends ge{constructor(e){super(),_e(this,e,ak,rk,me,{tooltip:0,class:1})}}function uk(n){let e,t,i,s,l;const o=n[6].default,r=yt(o,n,n[5],null);return{c(){e=v("th"),r&&r.c(),p(e,"tabindex","0"),p(e,"title",n[2]),p(e,"class",t="col-sort "+n[1]),Q(e,"col-sort-disabled",n[3]),Q(e,"sort-active",n[0]==="-"+n[2]||n[0]==="+"+n[2]),Q(e,"sort-desc",n[0]==="-"+n[2]),Q(e,"sort-asc",n[0]==="+"+n[2])},m(a,u){w(a,e,u),r&&r.m(e,null),i=!0,s||(l=[J(e,"click",n[7]),J(e,"keydown",n[8])],s=!0)},p(a,[u]){r&&r.p&&(!i||u&32)&&wt(r,o,a,a[5],i?kt(o,a[5],u,null):St(a[5]),null),(!i||u&4)&&p(e,"title",a[2]),(!i||u&2&&t!==(t="col-sort "+a[1]))&&p(e,"class",t),(!i||u&10)&&Q(e,"col-sort-disabled",a[3]),(!i||u&7)&&Q(e,"sort-active",a[0]==="-"+a[2]||a[0]==="+"+a[2]),(!i||u&7)&&Q(e,"sort-desc",a[0]==="-"+a[2]),(!i||u&7)&&Q(e,"sort-asc",a[0]==="+"+a[2])},i(a){i||(A(r,a),i=!0)},o(a){I(r,a),i=!1},d(a){a&&k(e),r&&r.d(a),s=!1,Ee(l)}}}function fk(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,{name:o}=e,{sort:r=""}=e,{disable:a=!1}=e;function u(){a||("-"+o===r?t(0,r="+"+o):t(0,r="-"+o))}const f=()=>u(),c=d=>{(d.code==="Enter"||d.code==="Space")&&(d.preventDefault(),u())};return n.$$set=d=>{"class"in d&&t(1,l=d.class),"name"in d&&t(2,o=d.name),"sort"in d&&t(0,r=d.sort),"disable"in d&&t(3,a=d.disable),"$$scope"in d&&t(5,s=d.$$scope)},[r,l,o,a,u,s,i,f,c]}class an extends ge{constructor(e){super(),_e(this,e,fk,uk,me,{class:1,name:2,sort:0,disable:3})}}function ck(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt txt-hint")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function dk(n){let e,t,i,s,l,o,r;return{c(){e=v("div"),t=v("div"),i=U(n[2]),s=E(),l=v("div"),o=U(n[1]),r=U(" UTC"),p(t,"class","date"),p(l,"class","time svelte-zdiknu"),p(e,"class","datetime svelte-zdiknu")},m(a,u){w(a,e,u),g(e,t),g(t,i),g(e,s),g(e,l),g(l,o),g(l,r)},p(a,u){u&4&&se(i,a[2]),u&2&&se(o,a[1])},d(a){a&&k(e)}}}function pk(n){let e;function t(l,o){return l[0]?dk:ck}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,[o]){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},i:x,o:x,d(l){s.d(l),l&&k(e)}}}function mk(n,e,t){let i,s,{date:l=""}=e;return n.$$set=o=>{"date"in o&&t(0,l=o.date)},n.$$.update=()=>{n.$$.dirty&1&&t(2,i=l?l.substring(0,10):null),n.$$.dirty&1&&t(1,s=l?l.substring(10,19):null)},[l,s,i]}class wi extends ge{constructor(e){super(),_e(this,e,mk,pk,me,{date:0})}}const hk=n=>({}),of=n=>({}),_k=n=>({}),rf=n=>({});function gk(n){let e,t,i,s,l,o,r,a;const u=n[5].before,f=yt(u,n,n[4],rf),c=n[5].default,d=yt(c,n,n[4],null),m=n[5].after,_=yt(m,n,n[4],of);return{c(){e=v("div"),f&&f.c(),t=E(),i=v("div"),d&&d.c(),l=E(),_&&_.c(),p(i,"class",s="horizontal-scroller "+n[0]+" "+n[3]+" svelte-wc2j9h"),p(e,"class","horizontal-scroller-wrapper svelte-wc2j9h")},m(h,b){w(h,e,b),f&&f.m(e,null),g(e,t),g(e,i),d&&d.m(i,null),n[6](i),g(e,l),_&&_.m(e,null),o=!0,r||(a=[J(window,"resize",n[1]),J(i,"scroll",n[1])],r=!0)},p(h,[b]){f&&f.p&&(!o||b&16)&&wt(f,u,h,h[4],o?kt(u,h[4],b,_k):St(h[4]),rf),d&&d.p&&(!o||b&16)&&wt(d,c,h,h[4],o?kt(c,h[4],b,null):St(h[4]),null),(!o||b&9&&s!==(s="horizontal-scroller "+h[0]+" "+h[3]+" svelte-wc2j9h"))&&p(i,"class",s),_&&_.p&&(!o||b&16)&&wt(_,m,h,h[4],o?kt(m,h[4],b,hk):St(h[4]),of)},i(h){o||(A(f,h),A(d,h),A(_,h),o=!0)},o(h){I(f,h),I(d,h),I(_,h),o=!1},d(h){h&&k(e),f&&f.d(h),d&&d.d(h),n[6](null),_&&_.d(h),r=!1,Ee(a)}}}function bk(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,o=null,r="",a=null,u;function f(){o&&(clearTimeout(a),a=setTimeout(()=>{const d=o.offsetWidth,m=o.scrollWidth;m-d?(t(3,r="scrollable"),o.scrollLeft===0?t(3,r+=" scroll-start"):o.scrollLeft+d==m&&t(3,r+=" scroll-end")):t(3,r="")},100))}Gt(()=>(f(),u=new MutationObserver(()=>{f()}),u.observe(o,{attributeFilter:["width"],childList:!0,subtree:!0}),()=>{u==null||u.disconnect(),clearTimeout(a)}));function c(d){te[d?"unshift":"push"](()=>{o=d,t(2,o)})}return n.$$set=d=>{"class"in d&&t(0,l=d.class),"$$scope"in d&&t(4,s=d.$$scope)},[l,f,o,r,s,i,c]}class ja extends ge{constructor(e){super(),_e(this,e,bk,gk,me,{class:0,refresh:1})}get refresh(){return this.$$.ctx[1]}}function af(n,e,t){const i=n.slice();return i[23]=e[t],i}function vk(n){let e;return{c(){e=v("div"),e.innerHTML=` Method`,p(e,"class","col-header-content")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function yk(n){let e,t,i,s;return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),s.textContent="URL",p(t,"class",B.getFieldTypeIcon("url")),p(s,"class","txt"),p(e,"class","col-header-content")},m(l,o){w(l,e,o),g(e,t),g(e,i),g(e,s)},p:x,d(l){l&&k(e)}}}function kk(n){let e,t,i,s;return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),s.textContent="Referer",p(t,"class",B.getFieldTypeIcon("url")),p(s,"class","txt"),p(e,"class","col-header-content")},m(l,o){w(l,e,o),g(e,t),g(e,i),g(e,s)},p:x,d(l){l&&k(e)}}}function wk(n){let e,t,i,s;return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),s.textContent="User IP",p(t,"class",B.getFieldTypeIcon("number")),p(s,"class","txt"),p(e,"class","col-header-content")},m(l,o){w(l,e,o),g(e,t),g(e,i),g(e,s)},p:x,d(l){l&&k(e)}}}function Sk(n){let e,t,i,s;return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),s.textContent="Status",p(t,"class",B.getFieldTypeIcon("number")),p(s,"class","txt"),p(e,"class","col-header-content")},m(l,o){w(l,e,o),g(e,t),g(e,i),g(e,s)},p:x,d(l){l&&k(e)}}}function $k(n){let e,t,i,s;return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),s.textContent="Created",p(t,"class",B.getFieldTypeIcon("date")),p(s,"class","txt"),p(e,"class","col-header-content")},m(l,o){w(l,e,o),g(e,t),g(e,i),g(e,s)},p:x,d(l){l&&k(e)}}}function uf(n){let e;function t(l,o){return l[6]?Tk:Ck}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,o){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},d(l){s.d(l),l&&k(e)}}}function Ck(n){var r;let e,t,i,s,l,o=((r=n[0])==null?void 0:r.length)&&ff(n);return{c(){e=v("tr"),t=v("td"),i=v("h6"),i.textContent="No logs found.",s=E(),o&&o.c(),l=E(),p(t,"colspan","99"),p(t,"class","txt-center txt-hint p-xs")},m(a,u){w(a,e,u),g(e,t),g(t,i),g(t,s),o&&o.m(t,null),g(e,l)},p(a,u){var f;(f=a[0])!=null&&f.length?o?o.p(a,u):(o=ff(a),o.c(),o.m(t,null)):o&&(o.d(1),o=null)},d(a){a&&k(e),o&&o.d()}}}function Tk(n){let e;return{c(){e=v("tr"),e.innerHTML=` `},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function ff(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Clear filters',p(e,"type","button"),p(e,"class","btn btn-hint btn-expanded m-t-sm")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[19]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function cf(n){let e;return{c(){e=v("i"),p(e,"class","ri-error-warning-line txt-danger m-l-5 m-r-5"),p(e,"title","Error")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function df(n,e){var Te,Ze,ht;let t,i,s,l=((Te=e[23].method)==null?void 0:Te.toUpperCase())+"",o,r,a,u,f,c=e[23].url+"",d,m,_,h,b,y,S=(e[23].referer||"N/A")+"",C,$,T,M,O,D=(e[23].userIp||"N/A")+"",L,P,N,F,R,q=e[23].status+"",j,Y,X,G,W,le,ee,ie,be,Se,Ve=(((Ze=e[23].meta)==null?void 0:Ze.errorMessage)||((ht=e[23].meta)==null?void 0:ht.errorData))&&cf();G=new wi({props:{date:e[23].created}});function Be(){return e[17](e[23])}function ke(...Ge){return e[18](e[23],...Ge)}return{key:n,first:null,c(){t=v("tr"),i=v("td"),s=v("span"),o=U(l),a=E(),u=v("td"),f=v("span"),d=U(c),_=E(),Ve&&Ve.c(),h=E(),b=v("td"),y=v("span"),C=U(S),T=E(),M=v("td"),O=v("span"),L=U(D),N=E(),F=v("td"),R=v("span"),j=U(q),Y=E(),X=v("td"),H(G.$$.fragment),W=E(),le=v("td"),le.innerHTML='',ee=E(),p(s,"class",r="label txt-uppercase "+e[9][e[23].method.toLowerCase()]),p(i,"class","col-type-text col-field-method min-width"),p(f,"class","txt txt-ellipsis"),p(f,"title",m=e[23].url),p(u,"class","col-type-text col-field-url"),p(y,"class","txt txt-ellipsis"),p(y,"title",$=e[23].referer),Q(y,"txt-hint",!e[23].referer),p(b,"class","col-type-text col-field-referer"),p(O,"class","txt txt-ellipsis"),p(O,"title",P=e[23].userIp),Q(O,"txt-hint",!e[23].userIp),p(M,"class","col-type-number col-field-userIp"),p(R,"class","label"),Q(R,"label-danger",e[23].status>=400),p(F,"class","col-type-number col-field-status"),p(X,"class","col-type-date col-field-created"),p(le,"class","col-type-action min-width"),p(t,"tabindex","0"),p(t,"class","row-handle"),this.first=t},m(Ge,Ye){w(Ge,t,Ye),g(t,i),g(i,s),g(s,o),g(t,a),g(t,u),g(u,f),g(f,d),g(u,_),Ve&&Ve.m(u,null),g(t,h),g(t,b),g(b,y),g(y,C),g(t,T),g(t,M),g(M,O),g(O,L),g(t,N),g(t,F),g(F,R),g(R,j),g(t,Y),g(t,X),V(G,X,null),g(t,W),g(t,le),g(t,ee),ie=!0,be||(Se=[J(t,"click",Be),J(t,"keydown",ke)],be=!0)},p(Ge,Ye){var fe,ze,Dt;e=Ge,(!ie||Ye&8)&&l!==(l=((fe=e[23].method)==null?void 0:fe.toUpperCase())+"")&&se(o,l),(!ie||Ye&8&&r!==(r="label txt-uppercase "+e[9][e[23].method.toLowerCase()]))&&p(s,"class",r),(!ie||Ye&8)&&c!==(c=e[23].url+"")&&se(d,c),(!ie||Ye&8&&m!==(m=e[23].url))&&p(f,"title",m),(ze=e[23].meta)!=null&&ze.errorMessage||(Dt=e[23].meta)!=null&&Dt.errorData?Ve||(Ve=cf(),Ve.c(),Ve.m(u,null)):Ve&&(Ve.d(1),Ve=null),(!ie||Ye&8)&&S!==(S=(e[23].referer||"N/A")+"")&&se(C,S),(!ie||Ye&8&&$!==($=e[23].referer))&&p(y,"title",$),(!ie||Ye&8)&&Q(y,"txt-hint",!e[23].referer),(!ie||Ye&8)&&D!==(D=(e[23].userIp||"N/A")+"")&&se(L,D),(!ie||Ye&8&&P!==(P=e[23].userIp))&&p(O,"title",P),(!ie||Ye&8)&&Q(O,"txt-hint",!e[23].userIp),(!ie||Ye&8)&&q!==(q=e[23].status+"")&&se(j,q),(!ie||Ye&8)&&Q(R,"label-danger",e[23].status>=400);const we={};Ye&8&&(we.date=e[23].created),G.$set(we)},i(Ge){ie||(A(G.$$.fragment,Ge),ie=!0)},o(Ge){I(G.$$.fragment,Ge),ie=!1},d(Ge){Ge&&k(t),Ve&&Ve.d(),z(G),be=!1,Ee(Se)}}}function Mk(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L=[],P=new Map,N;function F(ke){n[11](ke)}let R={disable:!0,class:"col-field-method",name:"method",$$slots:{default:[vk]},$$scope:{ctx:n}};n[1]!==void 0&&(R.sort=n[1]),s=new an({props:R}),te.push(()=>de(s,"sort",F));function q(ke){n[12](ke)}let j={disable:!0,class:"col-type-text col-field-url",name:"url",$$slots:{default:[yk]},$$scope:{ctx:n}};n[1]!==void 0&&(j.sort=n[1]),r=new an({props:j}),te.push(()=>de(r,"sort",q));function Y(ke){n[13](ke)}let X={disable:!0,class:"col-type-text col-field-referer",name:"referer",$$slots:{default:[kk]},$$scope:{ctx:n}};n[1]!==void 0&&(X.sort=n[1]),f=new an({props:X}),te.push(()=>de(f,"sort",Y));function G(ke){n[14](ke)}let W={disable:!0,class:"col-type-number col-field-userIp",name:"userIp",$$slots:{default:[wk]},$$scope:{ctx:n}};n[1]!==void 0&&(W.sort=n[1]),m=new an({props:W}),te.push(()=>de(m,"sort",G));function le(ke){n[15](ke)}let ee={disable:!0,class:"col-type-number col-field-status",name:"status",$$slots:{default:[Sk]},$$scope:{ctx:n}};n[1]!==void 0&&(ee.sort=n[1]),b=new an({props:ee}),te.push(()=>de(b,"sort",le));function ie(ke){n[16](ke)}let be={disable:!0,class:"col-type-date col-field-created",name:"created",$$slots:{default:[$k]},$$scope:{ctx:n}};n[1]!==void 0&&(be.sort=n[1]),C=new an({props:be}),te.push(()=>de(C,"sort",ie));let Se=n[3];const Ve=ke=>ke[23].id;for(let ke=0;kel=!1)),s.$set(Ze);const ht={};Te&67108864&&(ht.$$scope={dirty:Te,ctx:ke}),!a&&Te&2&&(a=!0,ht.sort=ke[1],he(()=>a=!1)),r.$set(ht);const Ge={};Te&67108864&&(Ge.$$scope={dirty:Te,ctx:ke}),!c&&Te&2&&(c=!0,Ge.sort=ke[1],he(()=>c=!1)),f.$set(Ge);const Ye={};Te&67108864&&(Ye.$$scope={dirty:Te,ctx:ke}),!_&&Te&2&&(_=!0,Ye.sort=ke[1],he(()=>_=!1)),m.$set(Ye);const we={};Te&67108864&&(we.$$scope={dirty:Te,ctx:ke}),!y&&Te&2&&(y=!0,we.sort=ke[1],he(()=>y=!1)),b.$set(we);const fe={};Te&67108864&&(fe.$$scope={dirty:Te,ctx:ke}),!$&&Te&2&&($=!0,fe.sort=ke[1],he(()=>$=!1)),C.$set(fe),Te&841&&(Se=ke[3],ae(),L=bt(L,Te,Ve,1,ke,Se,P,D,Bt,df,null,af),ue(),!Se.length&&Be?Be.p(ke,Te):Se.length?Be&&(Be.d(1),Be=null):(Be=uf(ke),Be.c(),Be.m(D,null))),(!N||Te&64)&&Q(e,"table-loading",ke[6])},i(ke){if(!N){A(s.$$.fragment,ke),A(r.$$.fragment,ke),A(f.$$.fragment,ke),A(m.$$.fragment,ke),A(b.$$.fragment,ke),A(C.$$.fragment,ke);for(let Te=0;Te{if(P<=1&&h(),t(6,d=!1),t(5,f=F.page),t(4,c=F.totalItems),s("load",u.concat(F.items)),N){const R=++m;for(;F.items.length&&m==R;)t(3,u=u.concat(F.items.splice(0,10))),await B.yieldToMain()}else t(3,u=u.concat(F.items))}).catch(F=>{F!=null&&F.isAbort||(t(6,d=!1),console.warn(F),h(),ce.error(F,!1))})}function h(){t(3,u=[]),t(5,f=1),t(4,c=0)}function b(P){a=P,t(1,a)}function y(P){a=P,t(1,a)}function S(P){a=P,t(1,a)}function C(P){a=P,t(1,a)}function $(P){a=P,t(1,a)}function T(P){a=P,t(1,a)}const M=P=>s("select",P),O=(P,N)=>{N.code==="Enter"&&(N.preventDefault(),s("select",P))},D=()=>t(0,o=""),L=()=>_(f+1);return n.$$set=P=>{"filter"in P&&t(0,o=P.filter),"presets"in P&&t(10,r=P.presets),"sort"in P&&t(1,a=P.sort)},n.$$.update=()=>{n.$$.dirty&1027&&(typeof a<"u"||typeof o<"u"||typeof r<"u")&&(h(),_(1)),n.$$.dirty&24&&t(7,i=c>u.length)},[o,a,_,u,c,f,d,i,s,l,r,b,y,S,C,$,T,M,O,D,L]}class Dk extends ge{constructor(e){super(),_e(this,e,Ek,Ok,me,{filter:0,presets:10,sort:1,load:2})}get load(){return this.$$.ctx[2]}}/*! * Chart.js v3.9.1 @@ -49,7 +49,7 @@ `),b.hasAttribute("data-start")||b.setAttribute("data-start",String(L+1))}y.textContent=M,t.highlightElement(y)},function(M){b.setAttribute(r,f),y.textContent=M})}}),t.plugins.fileHighlight={highlight:function(b){for(var y=(b||document).querySelectorAll(c),S=0,C;C=y[S++];)t.highlightElement(C)}};var _=!1;t.fileHighlight=function(){_||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),_=!0),t.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(b1);var p$=b1.exports;const xs=d$(p$);var m$={exports:{}};(function(n){(function(){if(typeof Prism>"u")return;var e=Object.assign||function(o,r){for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);return o};function t(o){this.defaults=e({},o)}function i(o){return o.replace(/-(\w)/g,function(r,a){return a.toUpperCase()})}function s(o){for(var r=0,a=0;ar&&(f[d]=` `+f[d],c=m)}a[u]=f.join("")}return a.join(` -`)}},n.exports&&(n.exports=t),Prism.plugins.NormalizeWhitespace=new t({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(o){var r=Prism.plugins.NormalizeWhitespace;if(!(o.settings&&o.settings["whitespace-normalization"]===!1)&&Prism.util.isActive(o.element,"whitespace-normalization",!0)){if((!o.element||!o.element.parentNode)&&o.code){o.code=r.normalize(o.code,o.settings);return}var a=o.element.parentNode;if(!(!o.code||!a||a.nodeName.toLowerCase()!=="pre")){o.settings==null&&(o.settings={});for(var u in l)if(Object.hasOwnProperty.call(l,u)){var f=l[u];if(a.hasAttribute("data-"+u))try{var c=JSON.parse(a.getAttribute("data-"+u)||"true");typeof c===f&&(o.settings[u]=c)}catch{}}for(var d=a.childNodes,m="",_="",h=!1,b=0;b>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),n.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:n.languages.dart}}},string:/[\s\S]+/}},string:void 0}),n.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),n.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":i,keyword:e,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})})(Prism);function h$(n){let e,t,i;return{c(){e=v("div"),t=v("code"),p(t,"class","svelte-10s5tkd"),p(e,"class",i="code-wrapper prism-light "+n[0]+" svelte-10s5tkd")},m(s,l){w(s,e,l),g(e,t),t.innerHTML=n[1]},p(s,[l]){l&2&&(t.innerHTML=s[1]),l&1&&i!==(i="code-wrapper prism-light "+s[0]+" svelte-10s5tkd")&&p(e,"class",i)},i:x,o:x,d(s){s&&k(e)}}}function _$(n,e,t){let{class:i=""}=e,{content:s=""}=e,{language:l="javascript"}=e,o="";function r(a){return a=typeof a=="string"?a:"",a=xs.plugins.NormalizeWhitespace.normalize(a,{"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),xs.highlight(a,xs.languages[l]||xs.languages.javascript,l)}return n.$$set=a=>{"class"in a&&t(0,i=a.class),"content"in a&&t(2,s=a.content),"language"in a&&t(3,l=a.language)},n.$$.update=()=>{n.$$.dirty&4&&typeof xs<"u"&&s&&t(1,o=r(s))},[i,o,s,l]}class v1 extends ge{constructor(e){super(),_e(this,e,_$,h$,me,{class:0,content:2,language:3})}}const g$=n=>({}),Ec=n=>({}),b$=n=>({}),Dc=n=>({});function Ac(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C=n[4]&&!n[2]&&Ic(n);const $=n[19].header,T=yt($,n,n[18],Dc);let M=n[4]&&n[2]&&Lc(n);const O=n[19].default,D=yt(O,n,n[18],null),L=n[19].footer,P=yt(L,n,n[18],Ec);return{c(){e=v("div"),t=v("div"),s=E(),l=v("div"),o=v("div"),C&&C.c(),r=E(),T&&T.c(),a=E(),M&&M.c(),u=E(),f=v("div"),D&&D.c(),c=E(),d=v("div"),P&&P.c(),p(t,"class","overlay"),p(o,"class","overlay-panel-section panel-header"),p(f,"class","overlay-panel-section panel-content"),p(d,"class","overlay-panel-section panel-footer"),p(l,"class",m="overlay-panel "+n[1]+" "+n[8]),Q(l,"popup",n[2]),p(e,"class","overlay-panel-container"),Q(e,"padded",n[2]),Q(e,"active",n[0])},m(N,F){w(N,e,F),g(e,t),g(e,s),g(e,l),g(l,o),C&&C.m(o,null),g(o,r),T&&T.m(o,null),g(o,a),M&&M.m(o,null),g(l,u),g(l,f),D&&D.m(f,null),n[21](f),g(l,c),g(l,d),P&&P.m(d,null),b=!0,y||(S=[J(t,"click",et(n[20])),J(f,"scroll",n[22])],y=!0)},p(N,F){n=N,n[4]&&!n[2]?C?C.p(n,F):(C=Ic(n),C.c(),C.m(o,r)):C&&(C.d(1),C=null),T&&T.p&&(!b||F[0]&262144)&&wt(T,$,n,n[18],b?kt($,n[18],F,b$):St(n[18]),Dc),n[4]&&n[2]?M?M.p(n,F):(M=Lc(n),M.c(),M.m(o,null)):M&&(M.d(1),M=null),D&&D.p&&(!b||F[0]&262144)&&wt(D,O,n,n[18],b?kt(O,n[18],F,null):St(n[18]),null),P&&P.p&&(!b||F[0]&262144)&&wt(P,L,n,n[18],b?kt(L,n[18],F,g$):St(n[18]),Ec),(!b||F[0]&258&&m!==(m="overlay-panel "+n[1]+" "+n[8]))&&p(l,"class",m),(!b||F[0]&262)&&Q(l,"popup",n[2]),(!b||F[0]&4)&&Q(e,"padded",n[2]),(!b||F[0]&1)&&Q(e,"active",n[0])},i(N){b||(N&&Qe(()=>{b&&(i||(i=je(t,ta,{duration:ys,opacity:0},!0)),i.run(1))}),A(T,N),A(D,N),A(P,N),Qe(()=>{b&&(h&&h.end(1),_=ug(l,fi,n[2]?{duration:ys,y:-10}:{duration:ys,x:50}),_.start())}),b=!0)},o(N){N&&(i||(i=je(t,ta,{duration:ys,opacity:0},!1)),i.run(0)),I(T,N),I(D,N),I(P,N),_&&_.invalidate(),h=$a(l,fi,n[2]?{duration:ys,y:10}:{duration:ys,x:50}),b=!1},d(N){N&&k(e),N&&i&&i.end(),C&&C.d(),T&&T.d(N),M&&M.d(),D&&D.d(N),n[21](null),P&&P.d(N),N&&h&&h.end(),y=!1,Ee(S)}}}function Ic(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","overlay-close")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[5])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function Lc(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-sm btn-circle btn-transparent btn-close m-l-auto")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[5])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function v$(n){let e,t,i,s,l=n[0]&&Ac(n);return{c(){e=v("div"),l&&l.c(),p(e,"class","overlay-panel-wrapper"),p(e,"tabindex","-1")},m(o,r){w(o,e,r),l&&l.m(e,null),n[23](e),t=!0,i||(s=[J(window,"resize",n[10]),J(window,"keydown",n[9])],i=!0)},p(o,r){o[0]?l?(l.p(o,r),r[0]&1&&A(l,1)):(l=Ac(o),l.c(),A(l,1),l.m(e,null)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){t||(A(l),t=!0)},o(o){I(l),t=!1},d(o){o&&k(e),l&&l.d(),n[23](null),i=!1,Ee(s)}}}let Zi,Er=[];function y1(){return Zi=Zi||document.querySelector(".overlays"),Zi||(Zi=document.createElement("div"),Zi.classList.add("overlays"),document.body.appendChild(Zi)),Zi}let ys=150;function Pc(){return 1e3+y1().querySelectorAll(".overlay-panel-container.active").length}function y$(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,{active:o=!1}=e,{popup:r=!1}=e,{overlayClose:a=!0}=e,{btnClose:u=!0}=e,{escClose:f=!0}=e,{beforeOpen:c=void 0}=e,{beforeHide:d=void 0}=e;const m=$t(),_="op_"+B.randomString(10);let h,b,y,S,C="",$=o;function T(){typeof c=="function"&&c()===!1||t(0,o=!0)}function M(){typeof d=="function"&&d()===!1||t(0,o=!1)}function O(){return o}async function D(W){t(17,$=W),W?(y=document.activeElement,m("show"),h==null||h.focus()):(clearTimeout(S),m("hide"),y==null||y.focus()),await fn(),L()}function L(){h&&(o?t(6,h.style.zIndex=Pc(),h):t(6,h.style="",h))}function P(){B.pushUnique(Er,_),document.body.classList.add("overlay-active")}function N(){B.removeByValue(Er,_),Er.length||document.body.classList.remove("overlay-active")}function F(W){o&&f&&W.code=="Escape"&&!B.isInput(W.target)&&h&&h.style.zIndex==Pc()&&(W.preventDefault(),M())}function R(W){o&&q(b)}function q(W,le){le&&t(8,C=""),W&&(S||(S=setTimeout(()=>{if(clearTimeout(S),S=null,!W)return;if(W.scrollHeight-W.offsetHeight>0)t(8,C="scrollable");else{t(8,C="");return}W.scrollTop==0?t(8,C+=" scroll-top-reached"):W.scrollTop+W.offsetHeight==W.scrollHeight&&t(8,C+=" scroll-bottom-reached")},100)))}Gt(()=>(y1().appendChild(h),()=>{var W;clearTimeout(S),N(),(W=h==null?void 0:h.classList)==null||W.add("hidden"),setTimeout(()=>{h==null||h.remove()},0)}));const j=()=>a?M():!0;function Y(W){te[W?"unshift":"push"](()=>{b=W,t(7,b)})}const X=W=>q(W.target);function G(W){te[W?"unshift":"push"](()=>{h=W,t(6,h)})}return n.$$set=W=>{"class"in W&&t(1,l=W.class),"active"in W&&t(0,o=W.active),"popup"in W&&t(2,r=W.popup),"overlayClose"in W&&t(3,a=W.overlayClose),"btnClose"in W&&t(4,u=W.btnClose),"escClose"in W&&t(12,f=W.escClose),"beforeOpen"in W&&t(13,c=W.beforeOpen),"beforeHide"in W&&t(14,d=W.beforeHide),"$$scope"in W&&t(18,s=W.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&131073&&$!=o&&D(o),n.$$.dirty[0]&128&&q(b,!0),n.$$.dirty[0]&64&&h&&L(),n.$$.dirty[0]&1&&(o?P():N())},[o,l,r,a,u,M,h,b,C,F,R,q,f,c,d,T,O,$,s,i,j,Y,X,G]}class ln extends ge{constructor(e){super(),_e(this,e,y$,v$,me,{class:1,active:0,popup:2,overlayClose:3,btnClose:4,escClose:12,beforeOpen:13,beforeHide:14,show:15,hide:5,isActive:16},null,[-1,-1])}get show(){return this.$$.ctx[15]}get hide(){return this.$$.ctx[5]}get isActive(){return this.$$.ctx[16]}}function k$(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt-hint")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function w$(n){let e,t=n[2].referer+"",i,s;return{c(){e=v("a"),i=U(t),p(e,"href",s=n[2].referer),p(e,"target","_blank"),p(e,"rel","noopener noreferrer")},m(l,o){w(l,e,o),g(e,i)},p(l,o){o&4&&t!==(t=l[2].referer+"")&&se(i,t),o&4&&s!==(s=l[2].referer)&&p(e,"href",s)},d(l){l&&k(e)}}}function S$(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt-hint")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function $$(n){let e,t,i;return t=new v1({props:{content:JSON.stringify(n[2].meta,null,2)}}),{c(){e=v("div"),H(t.$$.fragment),p(e,"class","block")},m(s,l){w(s,e,l),V(t,e,null),i=!0},p(s,l){const o={};l&4&&(o.content=JSON.stringify(s[2].meta,null,2)),t.$set(o)},i(s){i||(A(t.$$.fragment,s),i=!0)},o(s){I(t.$$.fragment,s),i=!1},d(s){s&&k(e),z(t)}}}function C$(n){var Ie;let e,t,i,s,l,o,r=n[2].id+"",a,u,f,c,d,m,_,h=n[2].status+"",b,y,S,C,$,T,M=((Ie=n[2].method)==null?void 0:Ie.toUpperCase())+"",O,D,L,P,N,F,R=n[2].auth+"",q,j,Y,X,G,W,le=n[2].url+"",ee,ie,be,Se,Ve,Be,ke,Te,Ze,ht,Ge,Ye=n[2].remoteIp+"",we,fe,ze,Dt,Le,$e,nt=n[2].userIp+"",At,It,Ut,Ln,ei,Sn,_t=n[2].userAgent+"",Pn,ds,ti,Ti,ps,pi,ve,De,Fe,Xe,Ot,$n,Nn,Bi,nn,cn;function Rl(Pe,Oe){return Pe[2].referer?w$:k$}let K=Rl(n),Z=K(n);const ne=[$$,S$],oe=[];function Ce(Pe,Oe){return Oe&4&&(ve=null),ve==null&&(ve=!B.isEmpty(Pe[2].meta)),ve?0:1}return De=Ce(n,-1),Fe=oe[De]=ne[De](n),nn=new wi({props:{date:n[2].created}}),{c(){e=v("table"),t=v("tbody"),i=v("tr"),s=v("td"),s.textContent="ID",l=E(),o=v("td"),a=U(r),u=E(),f=v("tr"),c=v("td"),c.textContent="Status",d=E(),m=v("td"),_=v("span"),b=U(h),y=E(),S=v("tr"),C=v("td"),C.textContent="Method",$=E(),T=v("td"),O=U(M),D=E(),L=v("tr"),P=v("td"),P.textContent="Auth",N=E(),F=v("td"),q=U(R),j=E(),Y=v("tr"),X=v("td"),X.textContent="URL",G=E(),W=v("td"),ee=U(le),ie=E(),be=v("tr"),Se=v("td"),Se.textContent="Referer",Ve=E(),Be=v("td"),Z.c(),ke=E(),Te=v("tr"),Ze=v("td"),Ze.textContent="Remote IP",ht=E(),Ge=v("td"),we=U(Ye),fe=E(),ze=v("tr"),Dt=v("td"),Dt.textContent="User IP",Le=E(),$e=v("td"),At=U(nt),It=E(),Ut=v("tr"),Ln=v("td"),Ln.textContent="UserAgent",ei=E(),Sn=v("td"),Pn=U(_t),ds=E(),ti=v("tr"),Ti=v("td"),Ti.textContent="Meta",ps=E(),pi=v("td"),Fe.c(),Xe=E(),Ot=v("tr"),$n=v("td"),$n.textContent="Created",Nn=E(),Bi=v("td"),H(nn.$$.fragment),p(s,"class","min-width txt-hint txt-bold"),p(c,"class","min-width txt-hint txt-bold"),p(_,"class","label"),Q(_,"label-danger",n[2].status>=400),p(C,"class","min-width txt-hint txt-bold"),p(P,"class","min-width txt-hint txt-bold"),p(X,"class","min-width txt-hint txt-bold"),p(Se,"class","min-width txt-hint txt-bold"),p(Ze,"class","min-width txt-hint txt-bold"),p(Dt,"class","min-width txt-hint txt-bold"),p(Ln,"class","min-width txt-hint txt-bold"),p(Ti,"class","min-width txt-hint txt-bold"),p($n,"class","min-width txt-hint txt-bold"),p(e,"class","table-border")},m(Pe,Oe){w(Pe,e,Oe),g(e,t),g(t,i),g(i,s),g(i,l),g(i,o),g(o,a),g(t,u),g(t,f),g(f,c),g(f,d),g(f,m),g(m,_),g(_,b),g(t,y),g(t,S),g(S,C),g(S,$),g(S,T),g(T,O),g(t,D),g(t,L),g(L,P),g(L,N),g(L,F),g(F,q),g(t,j),g(t,Y),g(Y,X),g(Y,G),g(Y,W),g(W,ee),g(t,ie),g(t,be),g(be,Se),g(be,Ve),g(be,Be),Z.m(Be,null),g(t,ke),g(t,Te),g(Te,Ze),g(Te,ht),g(Te,Ge),g(Ge,we),g(t,fe),g(t,ze),g(ze,Dt),g(ze,Le),g(ze,$e),g($e,At),g(t,It),g(t,Ut),g(Ut,Ln),g(Ut,ei),g(Ut,Sn),g(Sn,Pn),g(t,ds),g(t,ti),g(ti,Ti),g(ti,ps),g(ti,pi),oe[De].m(pi,null),g(t,Xe),g(t,Ot),g(Ot,$n),g(Ot,Nn),g(Ot,Bi),V(nn,Bi,null),cn=!0},p(Pe,Oe){var We;(!cn||Oe&4)&&r!==(r=Pe[2].id+"")&&se(a,r),(!cn||Oe&4)&&h!==(h=Pe[2].status+"")&&se(b,h),(!cn||Oe&4)&&Q(_,"label-danger",Pe[2].status>=400),(!cn||Oe&4)&&M!==(M=((We=Pe[2].method)==null?void 0:We.toUpperCase())+"")&&se(O,M),(!cn||Oe&4)&&R!==(R=Pe[2].auth+"")&&se(q,R),(!cn||Oe&4)&&le!==(le=Pe[2].url+"")&&se(ee,le),K===(K=Rl(Pe))&&Z?Z.p(Pe,Oe):(Z.d(1),Z=K(Pe),Z&&(Z.c(),Z.m(Be,null))),(!cn||Oe&4)&&Ye!==(Ye=Pe[2].remoteIp+"")&&se(we,Ye),(!cn||Oe&4)&&nt!==(nt=Pe[2].userIp+"")&&se(At,nt),(!cn||Oe&4)&&_t!==(_t=Pe[2].userAgent+"")&&se(Pn,_t);let Ke=De;De=Ce(Pe,Oe),De===Ke?oe[De].p(Pe,Oe):(ae(),I(oe[Ke],1,1,()=>{oe[Ke]=null}),ue(),Fe=oe[De],Fe?Fe.p(Pe,Oe):(Fe=oe[De]=ne[De](Pe),Fe.c()),A(Fe,1),Fe.m(pi,null));const Re={};Oe&4&&(Re.date=Pe[2].created),nn.$set(Re)},i(Pe){cn||(A(Fe),A(nn.$$.fragment,Pe),cn=!0)},o(Pe){I(Fe),I(nn.$$.fragment,Pe),cn=!1},d(Pe){Pe&&k(e),Z.d(),oe[De].d(),z(nn)}}}function T$(n){let e;return{c(){e=v("h4"),e.textContent="Request log"},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function M$(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Close',p(e,"type","button"),p(e,"class","btn btn-transparent")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[4]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function O$(n){let e,t,i={class:"overlay-panel-lg log-panel",$$slots:{footer:[M$],header:[T$],default:[C$]},$$scope:{ctx:n}};return e=new ln({props:i}),n[5](e),e.$on("hide",n[6]),e.$on("show",n[7]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&260&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[5](null),z(e,s)}}}function E$(n,e,t){let i,s=new Yr;function l(c){return t(2,s=c),i==null?void 0:i.show()}function o(){return i==null?void 0:i.hide()}const r=()=>o();function a(c){te[c?"unshift":"push"](()=>{i=c,t(1,i)})}function u(c){Ne.call(this,n,c)}function f(c){Ne.call(this,n,c)}return[o,i,s,l,r,a,u,f]}class D$ extends ge{constructor(e){super(),_e(this,e,E$,O$,me,{show:3,hide:0})}get show(){return this.$$.ctx[3]}get hide(){return this.$$.ctx[0]}}function A$(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Include requests by admins"),p(e,"type","checkbox"),p(e,"id",t=n[14]),p(s,"for",o=n[14])},m(u,f){w(u,e,f),e.checked=n[1],w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[10]),r=!0)},p(u,f){f&16384&&t!==(t=u[14])&&p(e,"id",t),f&2&&(e.checked=u[1]),f&16384&&o!==(o=u[14])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Nc(n){let e,t;return e=new c$({props:{filter:n[4],presets:n[5]}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&16&&(l.filter=i[4]),s&32&&(l.presets=i[5]),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function Fc(n){let e,t;return e=new Dk({props:{filter:n[4],presets:n[5]}}),e.$on("select",n[12]),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&16&&(l.filter=i[4]),s&32&&(l.presets=i[5]),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function I$(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S=n[3],C,$=n[3],T,M;r=new Go({}),r.$on("refresh",n[9]),d=new pe({props:{class:"form-field form-field-toggle m-0",$$slots:{default:[A$,({uniqueId:L})=>({14:L}),({uniqueId:L})=>L?16384:0]},$$scope:{ctx:n}}}),_=new Zo({props:{value:n[0],placeholder:"Search term or filter like status >= 400",extraAutocompleteKeys:n[7]}}),_.$on("submit",n[11]);let O=Nc(n),D=Fc(n);return{c(){e=v("div"),t=v("header"),i=v("nav"),s=v("div"),l=U(n[6]),o=E(),H(r.$$.fragment),a=E(),u=v("div"),f=E(),c=v("div"),H(d.$$.fragment),m=E(),H(_.$$.fragment),h=E(),b=v("div"),y=E(),O.c(),C=E(),D.c(),T=ye(),p(s,"class","breadcrumb-item"),p(i,"class","breadcrumbs"),p(u,"class","flex-fill"),p(c,"class","inline-flex"),p(t,"class","page-header"),p(b,"class","clearfix m-b-base"),p(e,"class","page-header-wrapper m-b-0")},m(L,P){w(L,e,P),g(e,t),g(t,i),g(i,s),g(s,l),g(t,o),V(r,t,null),g(t,a),g(t,u),g(t,f),g(t,c),V(d,c,null),g(e,m),V(_,e,null),g(e,h),g(e,b),g(e,y),O.m(e,null),w(L,C,P),D.m(L,P),w(L,T,P),M=!0},p(L,P){(!M||P&64)&&se(l,L[6]);const N={};P&49154&&(N.$$scope={dirty:P,ctx:L}),d.$set(N);const F={};P&1&&(F.value=L[0]),_.$set(F),P&8&&me(S,S=L[3])?(ae(),I(O,1,1,x),ue(),O=Nc(L),O.c(),A(O,1),O.m(e,null)):O.p(L,P),P&8&&me($,$=L[3])?(ae(),I(D,1,1,x),ue(),D=Fc(L),D.c(),A(D,1),D.m(T.parentNode,T)):D.p(L,P)},i(L){M||(A(r.$$.fragment,L),A(d.$$.fragment,L),A(_.$$.fragment,L),A(O),A(D),M=!0)},o(L){I(r.$$.fragment,L),I(d.$$.fragment,L),I(_.$$.fragment,L),I(O),I(D),M=!1},d(L){L&&k(e),z(r),z(d),z(_),O.d(L),L&&k(C),L&&k(T),D.d(L)}}}function L$(n){let e,t,i,s;e=new wn({props:{$$slots:{default:[I$]},$$scope:{ctx:n}}});let l={};return i=new D$({props:l}),n[13](i),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment)},m(o,r){V(e,o,r),w(o,t,r),V(i,o,r),s=!0},p(o,[r]){const a={};r&32895&&(a.$$scope={dirty:r,ctx:o}),e.$set(a);const u={};i.$set(u)},i(o){s||(A(e.$$.fragment,o),A(i.$$.fragment,o),s=!0)},o(o){I(e.$$.fragment,o),I(i.$$.fragment,o),s=!1},d(o){z(e,o),o&&k(t),n[13](null),z(i,o)}}}const Rc="includeAdminLogs";function P$(n,e,t){var y;let i,s,l;Je(n,Tt,S=>t(6,l=S));const o=["method","url","remoteIp","userIp","referer","status","auth","userAgent","created"];sn(Tt,l="Request logs",l);let r,a="",u=((y=window.localStorage)==null?void 0:y.getItem(Rc))<<0,f=1;function c(){t(3,f++,f)}const d=()=>c();function m(){u=this.checked,t(1,u)}const _=S=>t(0,a=S.detail),h=S=>r==null?void 0:r.show(S==null?void 0:S.detail);function b(S){te[S?"unshift":"push"](()=>{r=S,t(2,r)})}return n.$$.update=()=>{n.$$.dirty&2&&t(5,i=u?"":'auth!="admin"'),n.$$.dirty&2&&typeof u<"u"&&window.localStorage&&window.localStorage.setItem(Rc,u<<0),n.$$.dirty&1&&t(4,s=B.normalizeSearchFilter(a,o))},[a,u,r,f,s,i,l,o,c,d,m,_,h,b]}class N$ extends ge{constructor(e){super(),_e(this,e,P$,L$,me,{})}}const au=In({});function pn(n,e,t){au.set({text:n,yesCallback:e,noCallback:t})}function k1(){au.set({})}function qc(n){let e,t,i;const s=n[17].default,l=yt(s,n,n[16],null);return{c(){e=v("div"),l&&l.c(),p(e,"class",n[1]),Q(e,"active",n[0])},m(o,r){w(o,e,r),l&&l.m(e,null),n[18](e),i=!0},p(o,r){l&&l.p&&(!i||r&65536)&&wt(l,s,o,o[16],i?kt(s,o[16],r,null):St(o[16]),null),(!i||r&2)&&p(e,"class",o[1]),(!i||r&3)&&Q(e,"active",o[0])},i(o){i||(A(l,o),o&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,y:3},!0)),t.run(1))}),i=!0)},o(o){I(l,o),o&&(t||(t=je(e,fi,{duration:150,y:3},!1)),t.run(0)),i=!1},d(o){o&&k(e),l&&l.d(o),n[18](null),o&&t&&t.end()}}}function F$(n){let e,t,i,s,l=n[0]&&qc(n);return{c(){e=v("div"),l&&l.c(),p(e,"class","toggler-container"),p(e,"tabindex","-1")},m(o,r){w(o,e,r),l&&l.m(e,null),n[19](e),t=!0,i||(s=[J(window,"mousedown",n[5]),J(window,"click",n[6]),J(window,"keydown",n[4]),J(window,"focusin",n[7])],i=!0)},p(o,[r]){o[0]?l?(l.p(o,r),r&1&&A(l,1)):(l=qc(o),l.c(),A(l,1),l.m(e,null)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){t||(A(l),t=!0)},o(o){I(l),t=!1},d(o){o&&k(e),l&&l.d(),n[19](null),i=!1,Ee(s)}}}function R$(n,e,t){let{$$slots:i={},$$scope:s}=e,{trigger:l=void 0}=e,{active:o=!1}=e,{escClose:r=!0}=e,{autoScroll:a=!0}=e,{closableClass:u="closable"}=e,{class:f=""}=e,c,d,m,_,h=!1;const b=$t();function y(){t(0,o=!1),h=!1,clearTimeout(_)}function S(){t(0,o=!0),clearTimeout(_),_=setTimeout(()=>{a&&(d!=null&&d.scrollIntoViewIfNeeded?d==null||d.scrollIntoViewIfNeeded():d!=null&&d.scrollIntoView&&(d==null||d.scrollIntoView({behavior:"smooth",block:"nearest"})))},180)}function C(){o?y():S()}function $(j){return!c||j.classList.contains(u)||(m==null?void 0:m.contains(j))&&!c.contains(j)||c.contains(j)&&j.closest&&j.closest("."+u)}function T(j){(!o||$(j.target))&&(j.preventDefault(),j.stopPropagation(),C())}function M(j){(j.code==="Enter"||j.code==="Space")&&(!o||$(j.target))&&(j.preventDefault(),j.stopPropagation(),C())}function O(j){o&&r&&j.code==="Escape"&&(j.preventDefault(),y())}function D(j){o&&!(c!=null&&c.contains(j.target))?h=!0:h&&(h=!1)}function L(j){var Y;o&&h&&!(c!=null&&c.contains(j.target))&&!(m!=null&&m.contains(j.target))&&!((Y=j.target)!=null&&Y.closest(".flatpickr-calendar"))&&y()}function P(j){D(j),L(j)}function N(j){F(),c==null||c.addEventListener("click",T),t(15,m=j||(c==null?void 0:c.parentNode)),m==null||m.addEventListener("click",T),m==null||m.addEventListener("keydown",M)}function F(){clearTimeout(_),c==null||c.removeEventListener("click",T),m==null||m.removeEventListener("click",T),m==null||m.removeEventListener("keydown",M)}Gt(()=>(N(),()=>F()));function R(j){te[j?"unshift":"push"](()=>{d=j,t(3,d)})}function q(j){te[j?"unshift":"push"](()=>{c=j,t(2,c)})}return n.$$set=j=>{"trigger"in j&&t(8,l=j.trigger),"active"in j&&t(0,o=j.active),"escClose"in j&&t(9,r=j.escClose),"autoScroll"in j&&t(10,a=j.autoScroll),"closableClass"in j&&t(11,u=j.closableClass),"class"in j&&t(1,f=j.class),"$$scope"in j&&t(16,s=j.$$scope)},n.$$.update=()=>{var j,Y;n.$$.dirty&260&&c&&N(l),n.$$.dirty&32769&&(o?((j=m==null?void 0:m.classList)==null||j.add("active"),b("show")):((Y=m==null?void 0:m.classList)==null||Y.remove("active"),b("hide")))},[o,f,c,d,O,D,L,P,l,r,a,u,y,S,C,m,s,i,R,q]}class Kn extends ge{constructor(e){super(),_e(this,e,R$,F$,me,{trigger:8,active:0,escClose:9,autoScroll:10,closableClass:11,class:1,hide:12,show:13,toggle:14})}get hide(){return this.$$.ctx[12]}get show(){return this.$$.ctx[13]}get toggle(){return this.$$.ctx[14]}}function jc(n,e,t){const i=n.slice();return i[27]=e[t],i}function q$(n){let e,t,i,s,l,o,r,a,u;return{c(){e=v("input"),s=E(),l=v("label"),o=U("Unique"),p(e,"type","checkbox"),p(e,"id",t=n[30]),e.checked=i=n[3].unique,p(l,"for",r=n[30])},m(f,c){w(f,e,c),w(f,s,c),w(f,l,c),g(l,o),a||(u=J(e,"change",n[19]),a=!0)},p(f,c){c[0]&1073741824&&t!==(t=f[30])&&p(e,"id",t),c[0]&8&&i!==(i=f[3].unique)&&(e.checked=i),c[0]&1073741824&&r!==(r=f[30])&&p(l,"for",r)},d(f){f&&k(e),f&&k(s),f&&k(l),a=!1,u()}}}function j$(n){let e,t,i,s;function l(a){n[20](a)}var o=n[7];function r(a){var f;let u={id:a[30],placeholder:`eg. CREATE INDEX idx_test on ${(f=a[0])==null?void 0:f.name} (created)`,language:"sql-create-index",minHeight:"85"};return a[2]!==void 0&&(u.value=a[2]),{props:u}}return o&&(e=Rt(o,r(n)),te.push(()=>de(e,"value",l))),{c(){e&&H(e.$$.fragment),i=ye()},m(a,u){e&&V(e,a,u),w(a,i,u),s=!0},p(a,u){var c;const f={};if(u[0]&1073741824&&(f.id=a[30]),u[0]&1&&(f.placeholder=`eg. CREATE INDEX idx_test on ${(c=a[0])==null?void 0:c.name} (created)`),!t&&u[0]&4&&(t=!0,f.value=a[2],he(()=>t=!1)),u[0]&128&&o!==(o=a[7])){if(e){ae();const d=e;I(d.$$.fragment,1,0,()=>{z(d,1)}),ue()}o?(e=Rt(o,r(a)),te.push(()=>de(e,"value",l)),H(e.$$.fragment),A(e.$$.fragment,1),V(e,i.parentNode,i)):e=null}else o&&e.$set(f)},i(a){s||(e&&A(e.$$.fragment,a),s=!0)},o(a){e&&I(e.$$.fragment,a),s=!1},d(a){a&&k(i),e&&z(e,a)}}}function V$(n){let e;return{c(){e=v("textarea"),e.disabled=!0,p(e,"rows","7"),p(e,"placeholder","Loading...")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function z$(n){let e,t,i,s;const l=[V$,j$],o=[];function r(a,u){return a[8]?0:1}return e=r(n),t=o[e]=l[e](n),{c(){t.c(),i=ye()},m(a,u){o[e].m(a,u),w(a,i,u),s=!0},p(a,u){let f=e;e=r(a),e===f?o[e].p(a,u):(ae(),I(o[f],1,1,()=>{o[f]=null}),ue(),t=o[e],t?t.p(a,u):(t=o[e]=l[e](a),t.c()),A(t,1),t.m(i.parentNode,i))},i(a){s||(A(t),s=!0)},o(a){I(t),s=!1},d(a){o[e].d(a),a&&k(i)}}}function Vc(n){let e,t,i,s=n[10],l=[];for(let o=0;o({30:a}),({uniqueId:a})=>[a?1073741824:0]]},$$scope:{ctx:n}}}),i=new pe({props:{class:"form-field required m-b-sm",name:`indexes.${n[6]||""}`,$$slots:{default:[z$,({uniqueId:a})=>({30:a}),({uniqueId:a})=>[a?1073741824:0]]},$$scope:{ctx:n}}});let r=n[10].length>0&&Vc(n);return{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment),s=E(),r&&r.c(),l=ye()},m(a,u){V(e,a,u),w(a,t,u),V(i,a,u),w(a,s,u),r&&r.m(a,u),w(a,l,u),o=!0},p(a,u){const f={};u[0]&1073741837|u[1]&1&&(f.$$scope={dirty:u,ctx:a}),e.$set(f);const c={};u[0]&64&&(c.name=`indexes.${a[6]||""}`),u[0]&1073742213|u[1]&1&&(c.$$scope={dirty:u,ctx:a}),i.$set(c),a[10].length>0?r?r.p(a,u):(r=Vc(a),r.c(),r.m(l.parentNode,l)):r&&(r.d(1),r=null)},i(a){o||(A(e.$$.fragment,a),A(i.$$.fragment,a),o=!0)},o(a){I(e.$$.fragment,a),I(i.$$.fragment,a),o=!1},d(a){z(e,a),a&&k(t),z(i,a),a&&k(s),r&&r.d(a),a&&k(l)}}}function B$(n){let e,t=n[5]?"Update":"Create",i,s;return{c(){e=v("h4"),i=U(t),s=U(" index")},m(l,o){w(l,e,o),g(e,i),g(e,s)},p(l,o){o[0]&32&&t!==(t=l[5]?"Update":"Create")&&se(i,t)},d(l){l&&k(e)}}}function Hc(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-sm btn-circle btn-hint btn-transparent m-r-auto")},m(s,l){w(s,e,l),t||(i=[Me(He.call(null,e,{text:"Delete",position:"top"})),J(e,"click",n[16])],t=!0)},p:x,d(s){s&&k(e),t=!1,Ee(i)}}}function U$(n){let e,t,i,s,l,o,r=n[5]!=""&&Hc(n);return{c(){r&&r.c(),e=E(),t=v("button"),t.innerHTML='Cancel',i=E(),s=v("button"),s.innerHTML='Set index',p(t,"type","button"),p(t,"class","btn btn-transparent"),p(s,"type","button"),p(s,"class","btn"),Q(s,"btn-disabled",n[9].length<=0)},m(a,u){r&&r.m(a,u),w(a,e,u),w(a,t,u),w(a,i,u),w(a,s,u),l||(o=[J(t,"click",n[17]),J(s,"click",n[18])],l=!0)},p(a,u){a[5]!=""?r?r.p(a,u):(r=Hc(a),r.c(),r.m(e.parentNode,e)):r&&(r.d(1),r=null),u[0]&512&&Q(s,"btn-disabled",a[9].length<=0)},d(a){r&&r.d(a),a&&k(e),a&&k(t),a&&k(i),a&&k(s),l=!1,Ee(o)}}}function W$(n){let e,t;const i=[{popup:!0},n[14]];let s={$$slots:{footer:[U$],header:[B$],default:[H$]},$$scope:{ctx:n}};for(let l=0;lG.name==j);X?B.removeByValue(Y.columns,X):B.pushUnique(Y.columns,{name:j}),t(2,d=B.buildIndex(Y))}Gt(async()=>{t(8,h=!0);try{t(7,_=(await at(()=>import("./CodeEditor-95986a37.js"),["./CodeEditor-95986a37.js","./index-fd4289fb.js"],import.meta.url)).default)}catch(j){console.warn(j)}t(8,h=!1)});const M=()=>C(),O=()=>y(),D=()=>$(),L=j=>{t(3,s.unique=j.target.checked,s),t(3,s.tableName=s.tableName||(u==null?void 0:u.name),s),t(2,d=B.buildIndex(s))};function P(j){d=j,t(2,d)}const N=j=>T(j);function F(j){te[j?"unshift":"push"](()=>{f=j,t(4,f)})}function R(j){Ne.call(this,n,j)}function q(j){Ne.call(this,n,j)}return n.$$set=j=>{e=qe(qe({},e),Zt(j)),t(14,r=xe(e,o)),"collection"in j&&t(0,u=j.collection)},n.$$.update=()=>{var j,Y,X;n.$$.dirty[0]&1&&t(10,i=(((Y=(j=u==null?void 0:u.schema)==null?void 0:j.filter(G=>!G.toDelete))==null?void 0:Y.map(G=>G.name))||[]).concat(["created","updated"])),n.$$.dirty[0]&4&&t(3,s=B.parseIndex(d)),n.$$.dirty[0]&8&&t(9,l=((X=s.columns)==null?void 0:X.map(G=>G.name))||[])},[u,y,d,s,f,c,m,_,h,l,i,C,$,T,r,b,M,O,D,L,P,N,F,R,q]}class K$ extends ge{constructor(e){super(),_e(this,e,Y$,W$,me,{collection:0,show:15,hide:1},null,[-1,-1])}get show(){return this.$$.ctx[15]}get hide(){return this.$$.ctx[1]}}function Bc(n,e,t){const i=n.slice();i[10]=e[t],i[13]=t;const s=B.parseIndex(i[10]);return i[11]=s,i}function Uc(n){let e;return{c(){e=v("strong"),e.textContent="Unique:"},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Wc(n){var d;let e,t,i,s=((d=n[11].columns)==null?void 0:d.map(Yc).join(", "))+"",l,o,r,a,u,f=n[11].unique&&Uc();function c(){return n[4](n[10],n[13])}return{c(){var m,_;e=v("button"),f&&f.c(),t=E(),i=v("span"),l=U(s),p(i,"class","txt"),p(e,"type","button"),p(e,"class",o="label link-primary "+((_=(m=n[2].indexes)==null?void 0:m[n[13]])!=null&&_.message?"label-danger":"")+" svelte-167lbwu")},m(m,_){var h,b;w(m,e,_),f&&f.m(e,null),g(e,t),g(e,i),g(i,l),a||(u=[Me(r=He.call(null,e,((b=(h=n[2].indexes)==null?void 0:h[n[13]])==null?void 0:b.message)||"")),J(e,"click",c)],a=!0)},p(m,_){var h,b,y,S,C;n=m,n[11].unique?f||(f=Uc(),f.c(),f.m(e,t)):f&&(f.d(1),f=null),_&1&&s!==(s=((h=n[11].columns)==null?void 0:h.map(Yc).join(", "))+"")&&se(l,s),_&4&&o!==(o="label link-primary "+((y=(b=n[2].indexes)==null?void 0:b[n[13]])!=null&&y.message?"label-danger":"")+" svelte-167lbwu")&&p(e,"class",o),r&&jt(r.update)&&_&4&&r.update.call(null,((C=(S=n[2].indexes)==null?void 0:S[n[13]])==null?void 0:C.message)||"")},d(m){m&&k(e),f&&f.d(),a=!1,Ee(u)}}}function J$(n){var $,T,M;let e,t,i=(((T=($=n[0])==null?void 0:$.indexes)==null?void 0:T.length)||0)+"",s,l,o,r,a,u,f,c,d,m,_,h,b=((M=n[0])==null?void 0:M.indexes)||[],y=[];for(let O=0;Ode(c,"collection",S)),c.$on("remove",n[8]),c.$on("submit",n[9]),{c(){e=v("div"),t=U("Unique constraints and indexes ("),s=U(i),l=U(")"),o=E(),r=v("div");for(let O=0;O+ +`)}},n.exports&&(n.exports=t),Prism.plugins.NormalizeWhitespace=new t({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(o){var r=Prism.plugins.NormalizeWhitespace;if(!(o.settings&&o.settings["whitespace-normalization"]===!1)&&Prism.util.isActive(o.element,"whitespace-normalization",!0)){if((!o.element||!o.element.parentNode)&&o.code){o.code=r.normalize(o.code,o.settings);return}var a=o.element.parentNode;if(!(!o.code||!a||a.nodeName.toLowerCase()!=="pre")){o.settings==null&&(o.settings={});for(var u in l)if(Object.hasOwnProperty.call(l,u)){var f=l[u];if(a.hasAttribute("data-"+u))try{var c=JSON.parse(a.getAttribute("data-"+u)||"true");typeof c===f&&(o.settings[u]=c)}catch{}}for(var d=a.childNodes,m="",_="",h=!1,b=0;b>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),n.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:n.languages.dart}}},string:/[\s\S]+/}},string:void 0}),n.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),n.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":i,keyword:e,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})})(Prism);function h$(n){let e,t,i;return{c(){e=v("div"),t=v("code"),p(t,"class","svelte-10s5tkd"),p(e,"class",i="code-wrapper prism-light "+n[0]+" svelte-10s5tkd")},m(s,l){w(s,e,l),g(e,t),t.innerHTML=n[1]},p(s,[l]){l&2&&(t.innerHTML=s[1]),l&1&&i!==(i="code-wrapper prism-light "+s[0]+" svelte-10s5tkd")&&p(e,"class",i)},i:x,o:x,d(s){s&&k(e)}}}function _$(n,e,t){let{class:i=""}=e,{content:s=""}=e,{language:l="javascript"}=e,o="";function r(a){return a=typeof a=="string"?a:"",a=xs.plugins.NormalizeWhitespace.normalize(a,{"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),xs.highlight(a,xs.languages[l]||xs.languages.javascript,l)}return n.$$set=a=>{"class"in a&&t(0,i=a.class),"content"in a&&t(2,s=a.content),"language"in a&&t(3,l=a.language)},n.$$.update=()=>{n.$$.dirty&4&&typeof xs<"u"&&s&&t(1,o=r(s))},[i,o,s,l]}class v1 extends ge{constructor(e){super(),_e(this,e,_$,h$,me,{class:0,content:2,language:3})}}const g$=n=>({}),Ec=n=>({}),b$=n=>({}),Dc=n=>({});function Ac(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C=n[4]&&!n[2]&&Ic(n);const $=n[19].header,T=yt($,n,n[18],Dc);let M=n[4]&&n[2]&&Lc(n);const O=n[19].default,D=yt(O,n,n[18],null),L=n[19].footer,P=yt(L,n,n[18],Ec);return{c(){e=v("div"),t=v("div"),s=E(),l=v("div"),o=v("div"),C&&C.c(),r=E(),T&&T.c(),a=E(),M&&M.c(),u=E(),f=v("div"),D&&D.c(),c=E(),d=v("div"),P&&P.c(),p(t,"class","overlay"),p(o,"class","overlay-panel-section panel-header"),p(f,"class","overlay-panel-section panel-content"),p(d,"class","overlay-panel-section panel-footer"),p(l,"class",m="overlay-panel "+n[1]+" "+n[8]),Q(l,"popup",n[2]),p(e,"class","overlay-panel-container"),Q(e,"padded",n[2]),Q(e,"active",n[0])},m(N,F){w(N,e,F),g(e,t),g(e,s),g(e,l),g(l,o),C&&C.m(o,null),g(o,r),T&&T.m(o,null),g(o,a),M&&M.m(o,null),g(l,u),g(l,f),D&&D.m(f,null),n[21](f),g(l,c),g(l,d),P&&P.m(d,null),b=!0,y||(S=[J(t,"click",et(n[20])),J(f,"scroll",n[22])],y=!0)},p(N,F){n=N,n[4]&&!n[2]?C?C.p(n,F):(C=Ic(n),C.c(),C.m(o,r)):C&&(C.d(1),C=null),T&&T.p&&(!b||F[0]&262144)&&wt(T,$,n,n[18],b?kt($,n[18],F,b$):St(n[18]),Dc),n[4]&&n[2]?M?M.p(n,F):(M=Lc(n),M.c(),M.m(o,null)):M&&(M.d(1),M=null),D&&D.p&&(!b||F[0]&262144)&&wt(D,O,n,n[18],b?kt(O,n[18],F,null):St(n[18]),null),P&&P.p&&(!b||F[0]&262144)&&wt(P,L,n,n[18],b?kt(L,n[18],F,g$):St(n[18]),Ec),(!b||F[0]&258&&m!==(m="overlay-panel "+n[1]+" "+n[8]))&&p(l,"class",m),(!b||F[0]&262)&&Q(l,"popup",n[2]),(!b||F[0]&4)&&Q(e,"padded",n[2]),(!b||F[0]&1)&&Q(e,"active",n[0])},i(N){b||(N&&Qe(()=>{b&&(i||(i=je(t,ta,{duration:ys,opacity:0},!0)),i.run(1))}),A(T,N),A(D,N),A(P,N),Qe(()=>{b&&(h&&h.end(1),_=ug(l,fi,n[2]?{duration:ys,y:-10}:{duration:ys,x:50}),_.start())}),b=!0)},o(N){N&&(i||(i=je(t,ta,{duration:ys,opacity:0},!1)),i.run(0)),I(T,N),I(D,N),I(P,N),_&&_.invalidate(),h=$a(l,fi,n[2]?{duration:ys,y:10}:{duration:ys,x:50}),b=!1},d(N){N&&k(e),N&&i&&i.end(),C&&C.d(),T&&T.d(N),M&&M.d(),D&&D.d(N),n[21](null),P&&P.d(N),N&&h&&h.end(),y=!1,Ee(S)}}}function Ic(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","overlay-close")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[5])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function Lc(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-sm btn-circle btn-transparent btn-close m-l-auto")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[5])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function v$(n){let e,t,i,s,l=n[0]&&Ac(n);return{c(){e=v("div"),l&&l.c(),p(e,"class","overlay-panel-wrapper"),p(e,"tabindex","-1")},m(o,r){w(o,e,r),l&&l.m(e,null),n[23](e),t=!0,i||(s=[J(window,"resize",n[10]),J(window,"keydown",n[9])],i=!0)},p(o,r){o[0]?l?(l.p(o,r),r[0]&1&&A(l,1)):(l=Ac(o),l.c(),A(l,1),l.m(e,null)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){t||(A(l),t=!0)},o(o){I(l),t=!1},d(o){o&&k(e),l&&l.d(),n[23](null),i=!1,Ee(s)}}}let Zi,Er=[];function y1(){return Zi=Zi||document.querySelector(".overlays"),Zi||(Zi=document.createElement("div"),Zi.classList.add("overlays"),document.body.appendChild(Zi)),Zi}let ys=150;function Pc(){return 1e3+y1().querySelectorAll(".overlay-panel-container.active").length}function y$(n,e,t){let{$$slots:i={},$$scope:s}=e,{class:l=""}=e,{active:o=!1}=e,{popup:r=!1}=e,{overlayClose:a=!0}=e,{btnClose:u=!0}=e,{escClose:f=!0}=e,{beforeOpen:c=void 0}=e,{beforeHide:d=void 0}=e;const m=$t(),_="op_"+B.randomString(10);let h,b,y,S,C="",$=o;function T(){typeof c=="function"&&c()===!1||t(0,o=!0)}function M(){typeof d=="function"&&d()===!1||t(0,o=!1)}function O(){return o}async function D(W){t(17,$=W),W?(y=document.activeElement,m("show"),h==null||h.focus()):(clearTimeout(S),m("hide"),y==null||y.focus()),await fn(),L()}function L(){h&&(o?t(6,h.style.zIndex=Pc(),h):t(6,h.style="",h))}function P(){B.pushUnique(Er,_),document.body.classList.add("overlay-active")}function N(){B.removeByValue(Er,_),Er.length||document.body.classList.remove("overlay-active")}function F(W){o&&f&&W.code=="Escape"&&!B.isInput(W.target)&&h&&h.style.zIndex==Pc()&&(W.preventDefault(),M())}function R(W){o&&q(b)}function q(W,le){le&&t(8,C=""),W&&(S||(S=setTimeout(()=>{if(clearTimeout(S),S=null,!W)return;if(W.scrollHeight-W.offsetHeight>0)t(8,C="scrollable");else{t(8,C="");return}W.scrollTop==0?t(8,C+=" scroll-top-reached"):W.scrollTop+W.offsetHeight==W.scrollHeight&&t(8,C+=" scroll-bottom-reached")},100)))}Gt(()=>(y1().appendChild(h),()=>{var W;clearTimeout(S),N(),(W=h==null?void 0:h.classList)==null||W.add("hidden"),setTimeout(()=>{h==null||h.remove()},0)}));const j=()=>a?M():!0;function Y(W){te[W?"unshift":"push"](()=>{b=W,t(7,b)})}const X=W=>q(W.target);function G(W){te[W?"unshift":"push"](()=>{h=W,t(6,h)})}return n.$$set=W=>{"class"in W&&t(1,l=W.class),"active"in W&&t(0,o=W.active),"popup"in W&&t(2,r=W.popup),"overlayClose"in W&&t(3,a=W.overlayClose),"btnClose"in W&&t(4,u=W.btnClose),"escClose"in W&&t(12,f=W.escClose),"beforeOpen"in W&&t(13,c=W.beforeOpen),"beforeHide"in W&&t(14,d=W.beforeHide),"$$scope"in W&&t(18,s=W.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&131073&&$!=o&&D(o),n.$$.dirty[0]&128&&q(b,!0),n.$$.dirty[0]&64&&h&&L(),n.$$.dirty[0]&1&&(o?P():N())},[o,l,r,a,u,M,h,b,C,F,R,q,f,c,d,T,O,$,s,i,j,Y,X,G]}class ln extends ge{constructor(e){super(),_e(this,e,y$,v$,me,{class:1,active:0,popup:2,overlayClose:3,btnClose:4,escClose:12,beforeOpen:13,beforeHide:14,show:15,hide:5,isActive:16},null,[-1,-1])}get show(){return this.$$.ctx[15]}get hide(){return this.$$.ctx[5]}get isActive(){return this.$$.ctx[16]}}function k$(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt-hint")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function w$(n){let e,t=n[2].referer+"",i,s;return{c(){e=v("a"),i=U(t),p(e,"href",s=n[2].referer),p(e,"target","_blank"),p(e,"rel","noopener noreferrer")},m(l,o){w(l,e,o),g(e,i)},p(l,o){o&4&&t!==(t=l[2].referer+"")&&se(i,t),o&4&&s!==(s=l[2].referer)&&p(e,"href",s)},d(l){l&&k(e)}}}function S$(n){let e;return{c(){e=v("span"),e.textContent="N/A",p(e,"class","txt-hint")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function $$(n){let e,t,i;return t=new v1({props:{content:JSON.stringify(n[2].meta,null,2)}}),{c(){e=v("div"),H(t.$$.fragment),p(e,"class","block")},m(s,l){w(s,e,l),V(t,e,null),i=!0},p(s,l){const o={};l&4&&(o.content=JSON.stringify(s[2].meta,null,2)),t.$set(o)},i(s){i||(A(t.$$.fragment,s),i=!0)},o(s){I(t.$$.fragment,s),i=!1},d(s){s&&k(e),z(t)}}}function C$(n){var Ie;let e,t,i,s,l,o,r=n[2].id+"",a,u,f,c,d,m,_,h=n[2].status+"",b,y,S,C,$,T,M=((Ie=n[2].method)==null?void 0:Ie.toUpperCase())+"",O,D,L,P,N,F,R=n[2].auth+"",q,j,Y,X,G,W,le=n[2].url+"",ee,ie,be,Se,Ve,Be,ke,Te,Ze,ht,Ge,Ye=n[2].remoteIp+"",we,fe,ze,Dt,Le,$e,nt=n[2].userIp+"",At,It,Ut,Ln,ei,Sn,_t=n[2].userAgent+"",Pn,ds,ti,Ti,ps,pi,ve,De,Fe,Xe,Ot,$n,Nn,Bi,nn,cn;function Rl(Pe,Oe){return Pe[2].referer?w$:k$}let K=Rl(n),Z=K(n);const ne=[$$,S$],oe=[];function Ce(Pe,Oe){return Oe&4&&(ve=null),ve==null&&(ve=!B.isEmpty(Pe[2].meta)),ve?0:1}return De=Ce(n,-1),Fe=oe[De]=ne[De](n),nn=new wi({props:{date:n[2].created}}),{c(){e=v("table"),t=v("tbody"),i=v("tr"),s=v("td"),s.textContent="ID",l=E(),o=v("td"),a=U(r),u=E(),f=v("tr"),c=v("td"),c.textContent="Status",d=E(),m=v("td"),_=v("span"),b=U(h),y=E(),S=v("tr"),C=v("td"),C.textContent="Method",$=E(),T=v("td"),O=U(M),D=E(),L=v("tr"),P=v("td"),P.textContent="Auth",N=E(),F=v("td"),q=U(R),j=E(),Y=v("tr"),X=v("td"),X.textContent="URL",G=E(),W=v("td"),ee=U(le),ie=E(),be=v("tr"),Se=v("td"),Se.textContent="Referer",Ve=E(),Be=v("td"),Z.c(),ke=E(),Te=v("tr"),Ze=v("td"),Ze.textContent="Remote IP",ht=E(),Ge=v("td"),we=U(Ye),fe=E(),ze=v("tr"),Dt=v("td"),Dt.textContent="User IP",Le=E(),$e=v("td"),At=U(nt),It=E(),Ut=v("tr"),Ln=v("td"),Ln.textContent="UserAgent",ei=E(),Sn=v("td"),Pn=U(_t),ds=E(),ti=v("tr"),Ti=v("td"),Ti.textContent="Meta",ps=E(),pi=v("td"),Fe.c(),Xe=E(),Ot=v("tr"),$n=v("td"),$n.textContent="Created",Nn=E(),Bi=v("td"),H(nn.$$.fragment),p(s,"class","min-width txt-hint txt-bold"),p(c,"class","min-width txt-hint txt-bold"),p(_,"class","label"),Q(_,"label-danger",n[2].status>=400),p(C,"class","min-width txt-hint txt-bold"),p(P,"class","min-width txt-hint txt-bold"),p(X,"class","min-width txt-hint txt-bold"),p(Se,"class","min-width txt-hint txt-bold"),p(Ze,"class","min-width txt-hint txt-bold"),p(Dt,"class","min-width txt-hint txt-bold"),p(Ln,"class","min-width txt-hint txt-bold"),p(Ti,"class","min-width txt-hint txt-bold"),p($n,"class","min-width txt-hint txt-bold"),p(e,"class","table-border")},m(Pe,Oe){w(Pe,e,Oe),g(e,t),g(t,i),g(i,s),g(i,l),g(i,o),g(o,a),g(t,u),g(t,f),g(f,c),g(f,d),g(f,m),g(m,_),g(_,b),g(t,y),g(t,S),g(S,C),g(S,$),g(S,T),g(T,O),g(t,D),g(t,L),g(L,P),g(L,N),g(L,F),g(F,q),g(t,j),g(t,Y),g(Y,X),g(Y,G),g(Y,W),g(W,ee),g(t,ie),g(t,be),g(be,Se),g(be,Ve),g(be,Be),Z.m(Be,null),g(t,ke),g(t,Te),g(Te,Ze),g(Te,ht),g(Te,Ge),g(Ge,we),g(t,fe),g(t,ze),g(ze,Dt),g(ze,Le),g(ze,$e),g($e,At),g(t,It),g(t,Ut),g(Ut,Ln),g(Ut,ei),g(Ut,Sn),g(Sn,Pn),g(t,ds),g(t,ti),g(ti,Ti),g(ti,ps),g(ti,pi),oe[De].m(pi,null),g(t,Xe),g(t,Ot),g(Ot,$n),g(Ot,Nn),g(Ot,Bi),V(nn,Bi,null),cn=!0},p(Pe,Oe){var We;(!cn||Oe&4)&&r!==(r=Pe[2].id+"")&&se(a,r),(!cn||Oe&4)&&h!==(h=Pe[2].status+"")&&se(b,h),(!cn||Oe&4)&&Q(_,"label-danger",Pe[2].status>=400),(!cn||Oe&4)&&M!==(M=((We=Pe[2].method)==null?void 0:We.toUpperCase())+"")&&se(O,M),(!cn||Oe&4)&&R!==(R=Pe[2].auth+"")&&se(q,R),(!cn||Oe&4)&&le!==(le=Pe[2].url+"")&&se(ee,le),K===(K=Rl(Pe))&&Z?Z.p(Pe,Oe):(Z.d(1),Z=K(Pe),Z&&(Z.c(),Z.m(Be,null))),(!cn||Oe&4)&&Ye!==(Ye=Pe[2].remoteIp+"")&&se(we,Ye),(!cn||Oe&4)&&nt!==(nt=Pe[2].userIp+"")&&se(At,nt),(!cn||Oe&4)&&_t!==(_t=Pe[2].userAgent+"")&&se(Pn,_t);let Ke=De;De=Ce(Pe,Oe),De===Ke?oe[De].p(Pe,Oe):(ae(),I(oe[Ke],1,1,()=>{oe[Ke]=null}),ue(),Fe=oe[De],Fe?Fe.p(Pe,Oe):(Fe=oe[De]=ne[De](Pe),Fe.c()),A(Fe,1),Fe.m(pi,null));const Re={};Oe&4&&(Re.date=Pe[2].created),nn.$set(Re)},i(Pe){cn||(A(Fe),A(nn.$$.fragment,Pe),cn=!0)},o(Pe){I(Fe),I(nn.$$.fragment,Pe),cn=!1},d(Pe){Pe&&k(e),Z.d(),oe[De].d(),z(nn)}}}function T$(n){let e;return{c(){e=v("h4"),e.textContent="Request log"},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function M$(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Close',p(e,"type","button"),p(e,"class","btn btn-transparent")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[4]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function O$(n){let e,t,i={class:"overlay-panel-lg log-panel",$$slots:{footer:[M$],header:[T$],default:[C$]},$$scope:{ctx:n}};return e=new ln({props:i}),n[5](e),e.$on("hide",n[6]),e.$on("show",n[7]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&260&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[5](null),z(e,s)}}}function E$(n,e,t){let i,s=new Yr;function l(c){return t(2,s=c),i==null?void 0:i.show()}function o(){return i==null?void 0:i.hide()}const r=()=>o();function a(c){te[c?"unshift":"push"](()=>{i=c,t(1,i)})}function u(c){Ne.call(this,n,c)}function f(c){Ne.call(this,n,c)}return[o,i,s,l,r,a,u,f]}class D$ extends ge{constructor(e){super(),_e(this,e,E$,O$,me,{show:3,hide:0})}get show(){return this.$$.ctx[3]}get hide(){return this.$$.ctx[0]}}function A$(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Include requests by admins"),p(e,"type","checkbox"),p(e,"id",t=n[14]),p(s,"for",o=n[14])},m(u,f){w(u,e,f),e.checked=n[1],w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[10]),r=!0)},p(u,f){f&16384&&t!==(t=u[14])&&p(e,"id",t),f&2&&(e.checked=u[1]),f&16384&&o!==(o=u[14])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Nc(n){let e,t;return e=new c$({props:{filter:n[4],presets:n[5]}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&16&&(l.filter=i[4]),s&32&&(l.presets=i[5]),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function Fc(n){let e,t;return e=new Dk({props:{filter:n[4],presets:n[5]}}),e.$on("select",n[12]),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&16&&(l.filter=i[4]),s&32&&(l.presets=i[5]),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function I$(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S=n[3],C,$=n[3],T,M;r=new Go({}),r.$on("refresh",n[9]),d=new pe({props:{class:"form-field form-field-toggle m-0",$$slots:{default:[A$,({uniqueId:L})=>({14:L}),({uniqueId:L})=>L?16384:0]},$$scope:{ctx:n}}}),_=new Zo({props:{value:n[0],placeholder:"Search term or filter like status >= 400",extraAutocompleteKeys:n[7]}}),_.$on("submit",n[11]);let O=Nc(n),D=Fc(n);return{c(){e=v("div"),t=v("header"),i=v("nav"),s=v("div"),l=U(n[6]),o=E(),H(r.$$.fragment),a=E(),u=v("div"),f=E(),c=v("div"),H(d.$$.fragment),m=E(),H(_.$$.fragment),h=E(),b=v("div"),y=E(),O.c(),C=E(),D.c(),T=ye(),p(s,"class","breadcrumb-item"),p(i,"class","breadcrumbs"),p(u,"class","flex-fill"),p(c,"class","inline-flex"),p(t,"class","page-header"),p(b,"class","clearfix m-b-base"),p(e,"class","page-header-wrapper m-b-0")},m(L,P){w(L,e,P),g(e,t),g(t,i),g(i,s),g(s,l),g(t,o),V(r,t,null),g(t,a),g(t,u),g(t,f),g(t,c),V(d,c,null),g(e,m),V(_,e,null),g(e,h),g(e,b),g(e,y),O.m(e,null),w(L,C,P),D.m(L,P),w(L,T,P),M=!0},p(L,P){(!M||P&64)&&se(l,L[6]);const N={};P&49154&&(N.$$scope={dirty:P,ctx:L}),d.$set(N);const F={};P&1&&(F.value=L[0]),_.$set(F),P&8&&me(S,S=L[3])?(ae(),I(O,1,1,x),ue(),O=Nc(L),O.c(),A(O,1),O.m(e,null)):O.p(L,P),P&8&&me($,$=L[3])?(ae(),I(D,1,1,x),ue(),D=Fc(L),D.c(),A(D,1),D.m(T.parentNode,T)):D.p(L,P)},i(L){M||(A(r.$$.fragment,L),A(d.$$.fragment,L),A(_.$$.fragment,L),A(O),A(D),M=!0)},o(L){I(r.$$.fragment,L),I(d.$$.fragment,L),I(_.$$.fragment,L),I(O),I(D),M=!1},d(L){L&&k(e),z(r),z(d),z(_),O.d(L),L&&k(C),L&&k(T),D.d(L)}}}function L$(n){let e,t,i,s;e=new wn({props:{$$slots:{default:[I$]},$$scope:{ctx:n}}});let l={};return i=new D$({props:l}),n[13](i),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment)},m(o,r){V(e,o,r),w(o,t,r),V(i,o,r),s=!0},p(o,[r]){const a={};r&32895&&(a.$$scope={dirty:r,ctx:o}),e.$set(a);const u={};i.$set(u)},i(o){s||(A(e.$$.fragment,o),A(i.$$.fragment,o),s=!0)},o(o){I(e.$$.fragment,o),I(i.$$.fragment,o),s=!1},d(o){z(e,o),o&&k(t),n[13](null),z(i,o)}}}const Rc="includeAdminLogs";function P$(n,e,t){var y;let i,s,l;Je(n,Tt,S=>t(6,l=S));const o=["method","url","remoteIp","userIp","referer","status","auth","userAgent","created"];sn(Tt,l="Request logs",l);let r,a="",u=((y=window.localStorage)==null?void 0:y.getItem(Rc))<<0,f=1;function c(){t(3,f++,f)}const d=()=>c();function m(){u=this.checked,t(1,u)}const _=S=>t(0,a=S.detail),h=S=>r==null?void 0:r.show(S==null?void 0:S.detail);function b(S){te[S?"unshift":"push"](()=>{r=S,t(2,r)})}return n.$$.update=()=>{n.$$.dirty&2&&t(5,i=u?"":'auth!="admin"'),n.$$.dirty&2&&typeof u<"u"&&window.localStorage&&window.localStorage.setItem(Rc,u<<0),n.$$.dirty&1&&t(4,s=B.normalizeSearchFilter(a,o))},[a,u,r,f,s,i,l,o,c,d,m,_,h,b]}class N$ extends ge{constructor(e){super(),_e(this,e,P$,L$,me,{})}}const au=In({});function pn(n,e,t){au.set({text:n,yesCallback:e,noCallback:t})}function k1(){au.set({})}function qc(n){let e,t,i;const s=n[17].default,l=yt(s,n,n[16],null);return{c(){e=v("div"),l&&l.c(),p(e,"class",n[1]),Q(e,"active",n[0])},m(o,r){w(o,e,r),l&&l.m(e,null),n[18](e),i=!0},p(o,r){l&&l.p&&(!i||r&65536)&&wt(l,s,o,o[16],i?kt(s,o[16],r,null):St(o[16]),null),(!i||r&2)&&p(e,"class",o[1]),(!i||r&3)&&Q(e,"active",o[0])},i(o){i||(A(l,o),o&&Qe(()=>{i&&(t||(t=je(e,fi,{duration:150,y:3},!0)),t.run(1))}),i=!0)},o(o){I(l,o),o&&(t||(t=je(e,fi,{duration:150,y:3},!1)),t.run(0)),i=!1},d(o){o&&k(e),l&&l.d(o),n[18](null),o&&t&&t.end()}}}function F$(n){let e,t,i,s,l=n[0]&&qc(n);return{c(){e=v("div"),l&&l.c(),p(e,"class","toggler-container"),p(e,"tabindex","-1")},m(o,r){w(o,e,r),l&&l.m(e,null),n[19](e),t=!0,i||(s=[J(window,"mousedown",n[5]),J(window,"click",n[6]),J(window,"keydown",n[4]),J(window,"focusin",n[7])],i=!0)},p(o,[r]){o[0]?l?(l.p(o,r),r&1&&A(l,1)):(l=qc(o),l.c(),A(l,1),l.m(e,null)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){t||(A(l),t=!0)},o(o){I(l),t=!1},d(o){o&&k(e),l&&l.d(),n[19](null),i=!1,Ee(s)}}}function R$(n,e,t){let{$$slots:i={},$$scope:s}=e,{trigger:l=void 0}=e,{active:o=!1}=e,{escClose:r=!0}=e,{autoScroll:a=!0}=e,{closableClass:u="closable"}=e,{class:f=""}=e,c,d,m,_,h=!1;const b=$t();function y(){t(0,o=!1),h=!1,clearTimeout(_)}function S(){t(0,o=!0),clearTimeout(_),_=setTimeout(()=>{a&&(d!=null&&d.scrollIntoViewIfNeeded?d==null||d.scrollIntoViewIfNeeded():d!=null&&d.scrollIntoView&&(d==null||d.scrollIntoView({behavior:"smooth",block:"nearest"})))},180)}function C(){o?y():S()}function $(j){return!c||j.classList.contains(u)||(m==null?void 0:m.contains(j))&&!c.contains(j)||c.contains(j)&&j.closest&&j.closest("."+u)}function T(j){(!o||$(j.target))&&(j.preventDefault(),j.stopPropagation(),C())}function M(j){(j.code==="Enter"||j.code==="Space")&&(!o||$(j.target))&&(j.preventDefault(),j.stopPropagation(),C())}function O(j){o&&r&&j.code==="Escape"&&(j.preventDefault(),y())}function D(j){o&&!(c!=null&&c.contains(j.target))?h=!0:h&&(h=!1)}function L(j){var Y;o&&h&&!(c!=null&&c.contains(j.target))&&!(m!=null&&m.contains(j.target))&&!((Y=j.target)!=null&&Y.closest(".flatpickr-calendar"))&&y()}function P(j){D(j),L(j)}function N(j){F(),c==null||c.addEventListener("click",T),t(15,m=j||(c==null?void 0:c.parentNode)),m==null||m.addEventListener("click",T),m==null||m.addEventListener("keydown",M)}function F(){clearTimeout(_),c==null||c.removeEventListener("click",T),m==null||m.removeEventListener("click",T),m==null||m.removeEventListener("keydown",M)}Gt(()=>(N(),()=>F()));function R(j){te[j?"unshift":"push"](()=>{d=j,t(3,d)})}function q(j){te[j?"unshift":"push"](()=>{c=j,t(2,c)})}return n.$$set=j=>{"trigger"in j&&t(8,l=j.trigger),"active"in j&&t(0,o=j.active),"escClose"in j&&t(9,r=j.escClose),"autoScroll"in j&&t(10,a=j.autoScroll),"closableClass"in j&&t(11,u=j.closableClass),"class"in j&&t(1,f=j.class),"$$scope"in j&&t(16,s=j.$$scope)},n.$$.update=()=>{var j,Y;n.$$.dirty&260&&c&&N(l),n.$$.dirty&32769&&(o?((j=m==null?void 0:m.classList)==null||j.add("active"),b("show")):((Y=m==null?void 0:m.classList)==null||Y.remove("active"),b("hide")))},[o,f,c,d,O,D,L,P,l,r,a,u,y,S,C,m,s,i,R,q]}class Kn extends ge{constructor(e){super(),_e(this,e,R$,F$,me,{trigger:8,active:0,escClose:9,autoScroll:10,closableClass:11,class:1,hide:12,show:13,toggle:14})}get hide(){return this.$$.ctx[12]}get show(){return this.$$.ctx[13]}get toggle(){return this.$$.ctx[14]}}function jc(n,e,t){const i=n.slice();return i[27]=e[t],i}function q$(n){let e,t,i,s,l,o,r,a,u;return{c(){e=v("input"),s=E(),l=v("label"),o=U("Unique"),p(e,"type","checkbox"),p(e,"id",t=n[30]),e.checked=i=n[3].unique,p(l,"for",r=n[30])},m(f,c){w(f,e,c),w(f,s,c),w(f,l,c),g(l,o),a||(u=J(e,"change",n[19]),a=!0)},p(f,c){c[0]&1073741824&&t!==(t=f[30])&&p(e,"id",t),c[0]&8&&i!==(i=f[3].unique)&&(e.checked=i),c[0]&1073741824&&r!==(r=f[30])&&p(l,"for",r)},d(f){f&&k(e),f&&k(s),f&&k(l),a=!1,u()}}}function j$(n){let e,t,i,s;function l(a){n[20](a)}var o=n[7];function r(a){var f;let u={id:a[30],placeholder:`eg. CREATE INDEX idx_test on ${(f=a[0])==null?void 0:f.name} (created)`,language:"sql-create-index",minHeight:"85"};return a[2]!==void 0&&(u.value=a[2]),{props:u}}return o&&(e=Rt(o,r(n)),te.push(()=>de(e,"value",l))),{c(){e&&H(e.$$.fragment),i=ye()},m(a,u){e&&V(e,a,u),w(a,i,u),s=!0},p(a,u){var c;const f={};if(u[0]&1073741824&&(f.id=a[30]),u[0]&1&&(f.placeholder=`eg. CREATE INDEX idx_test on ${(c=a[0])==null?void 0:c.name} (created)`),!t&&u[0]&4&&(t=!0,f.value=a[2],he(()=>t=!1)),u[0]&128&&o!==(o=a[7])){if(e){ae();const d=e;I(d.$$.fragment,1,0,()=>{z(d,1)}),ue()}o?(e=Rt(o,r(a)),te.push(()=>de(e,"value",l)),H(e.$$.fragment),A(e.$$.fragment,1),V(e,i.parentNode,i)):e=null}else o&&e.$set(f)},i(a){s||(e&&A(e.$$.fragment,a),s=!0)},o(a){e&&I(e.$$.fragment,a),s=!1},d(a){a&&k(i),e&&z(e,a)}}}function V$(n){let e;return{c(){e=v("textarea"),e.disabled=!0,p(e,"rows","7"),p(e,"placeholder","Loading...")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function z$(n){let e,t,i,s;const l=[V$,j$],o=[];function r(a,u){return a[8]?0:1}return e=r(n),t=o[e]=l[e](n),{c(){t.c(),i=ye()},m(a,u){o[e].m(a,u),w(a,i,u),s=!0},p(a,u){let f=e;e=r(a),e===f?o[e].p(a,u):(ae(),I(o[f],1,1,()=>{o[f]=null}),ue(),t=o[e],t?t.p(a,u):(t=o[e]=l[e](a),t.c()),A(t,1),t.m(i.parentNode,i))},i(a){s||(A(t),s=!0)},o(a){I(t),s=!1},d(a){o[e].d(a),a&&k(i)}}}function Vc(n){let e,t,i,s=n[10],l=[];for(let o=0;o({30:a}),({uniqueId:a})=>[a?1073741824:0]]},$$scope:{ctx:n}}}),i=new pe({props:{class:"form-field required m-b-sm",name:`indexes.${n[6]||""}`,$$slots:{default:[z$,({uniqueId:a})=>({30:a}),({uniqueId:a})=>[a?1073741824:0]]},$$scope:{ctx:n}}});let r=n[10].length>0&&Vc(n);return{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment),s=E(),r&&r.c(),l=ye()},m(a,u){V(e,a,u),w(a,t,u),V(i,a,u),w(a,s,u),r&&r.m(a,u),w(a,l,u),o=!0},p(a,u){const f={};u[0]&1073741837|u[1]&1&&(f.$$scope={dirty:u,ctx:a}),e.$set(f);const c={};u[0]&64&&(c.name=`indexes.${a[6]||""}`),u[0]&1073742213|u[1]&1&&(c.$$scope={dirty:u,ctx:a}),i.$set(c),a[10].length>0?r?r.p(a,u):(r=Vc(a),r.c(),r.m(l.parentNode,l)):r&&(r.d(1),r=null)},i(a){o||(A(e.$$.fragment,a),A(i.$$.fragment,a),o=!0)},o(a){I(e.$$.fragment,a),I(i.$$.fragment,a),o=!1},d(a){z(e,a),a&&k(t),z(i,a),a&&k(s),r&&r.d(a),a&&k(l)}}}function B$(n){let e,t=n[5]?"Update":"Create",i,s;return{c(){e=v("h4"),i=U(t),s=U(" index")},m(l,o){w(l,e,o),g(e,i),g(e,s)},p(l,o){o[0]&32&&t!==(t=l[5]?"Update":"Create")&&se(i,t)},d(l){l&&k(e)}}}function Hc(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-sm btn-circle btn-hint btn-transparent m-r-auto")},m(s,l){w(s,e,l),t||(i=[Me(He.call(null,e,{text:"Delete",position:"top"})),J(e,"click",n[16])],t=!0)},p:x,d(s){s&&k(e),t=!1,Ee(i)}}}function U$(n){let e,t,i,s,l,o,r=n[5]!=""&&Hc(n);return{c(){r&&r.c(),e=E(),t=v("button"),t.innerHTML='Cancel',i=E(),s=v("button"),s.innerHTML='Set index',p(t,"type","button"),p(t,"class","btn btn-transparent"),p(s,"type","button"),p(s,"class","btn"),Q(s,"btn-disabled",n[9].length<=0)},m(a,u){r&&r.m(a,u),w(a,e,u),w(a,t,u),w(a,i,u),w(a,s,u),l||(o=[J(t,"click",n[17]),J(s,"click",n[18])],l=!0)},p(a,u){a[5]!=""?r?r.p(a,u):(r=Hc(a),r.c(),r.m(e.parentNode,e)):r&&(r.d(1),r=null),u[0]&512&&Q(s,"btn-disabled",a[9].length<=0)},d(a){r&&r.d(a),a&&k(e),a&&k(t),a&&k(i),a&&k(s),l=!1,Ee(o)}}}function W$(n){let e,t;const i=[{popup:!0},n[14]];let s={$$slots:{footer:[U$],header:[B$],default:[H$]},$$scope:{ctx:n}};for(let l=0;lG.name==j);X?B.removeByValue(Y.columns,X):B.pushUnique(Y.columns,{name:j}),t(2,d=B.buildIndex(Y))}Gt(async()=>{t(8,h=!0);try{t(7,_=(await at(()=>import("./CodeEditor-ea0b96ae.js"),["./CodeEditor-ea0b96ae.js","./index-fd4289fb.js"],import.meta.url)).default)}catch(j){console.warn(j)}t(8,h=!1)});const M=()=>C(),O=()=>y(),D=()=>$(),L=j=>{t(3,s.unique=j.target.checked,s),t(3,s.tableName=s.tableName||(u==null?void 0:u.name),s),t(2,d=B.buildIndex(s))};function P(j){d=j,t(2,d)}const N=j=>T(j);function F(j){te[j?"unshift":"push"](()=>{f=j,t(4,f)})}function R(j){Ne.call(this,n,j)}function q(j){Ne.call(this,n,j)}return n.$$set=j=>{e=qe(qe({},e),Zt(j)),t(14,r=xe(e,o)),"collection"in j&&t(0,u=j.collection)},n.$$.update=()=>{var j,Y,X;n.$$.dirty[0]&1&&t(10,i=(((Y=(j=u==null?void 0:u.schema)==null?void 0:j.filter(G=>!G.toDelete))==null?void 0:Y.map(G=>G.name))||[]).concat(["created","updated"])),n.$$.dirty[0]&4&&t(3,s=B.parseIndex(d)),n.$$.dirty[0]&8&&t(9,l=((X=s.columns)==null?void 0:X.map(G=>G.name))||[])},[u,y,d,s,f,c,m,_,h,l,i,C,$,T,r,b,M,O,D,L,P,N,F,R,q]}class K$ extends ge{constructor(e){super(),_e(this,e,Y$,W$,me,{collection:0,show:15,hide:1},null,[-1,-1])}get show(){return this.$$.ctx[15]}get hide(){return this.$$.ctx[1]}}function Bc(n,e,t){const i=n.slice();i[10]=e[t],i[13]=t;const s=B.parseIndex(i[10]);return i[11]=s,i}function Uc(n){let e;return{c(){e=v("strong"),e.textContent="Unique:"},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Wc(n){var d;let e,t,i,s=((d=n[11].columns)==null?void 0:d.map(Yc).join(", "))+"",l,o,r,a,u,f=n[11].unique&&Uc();function c(){return n[4](n[10],n[13])}return{c(){var m,_;e=v("button"),f&&f.c(),t=E(),i=v("span"),l=U(s),p(i,"class","txt"),p(e,"type","button"),p(e,"class",o="label link-primary "+((_=(m=n[2].indexes)==null?void 0:m[n[13]])!=null&&_.message?"label-danger":"")+" svelte-167lbwu")},m(m,_){var h,b;w(m,e,_),f&&f.m(e,null),g(e,t),g(e,i),g(i,l),a||(u=[Me(r=He.call(null,e,((b=(h=n[2].indexes)==null?void 0:h[n[13]])==null?void 0:b.message)||"")),J(e,"click",c)],a=!0)},p(m,_){var h,b,y,S,C;n=m,n[11].unique?f||(f=Uc(),f.c(),f.m(e,t)):f&&(f.d(1),f=null),_&1&&s!==(s=((h=n[11].columns)==null?void 0:h.map(Yc).join(", "))+"")&&se(l,s),_&4&&o!==(o="label link-primary "+((y=(b=n[2].indexes)==null?void 0:b[n[13]])!=null&&y.message?"label-danger":"")+" svelte-167lbwu")&&p(e,"class",o),r&&jt(r.update)&&_&4&&r.update.call(null,((C=(S=n[2].indexes)==null?void 0:S[n[13]])==null?void 0:C.message)||"")},d(m){m&&k(e),f&&f.d(),a=!1,Ee(u)}}}function J$(n){var $,T,M;let e,t,i=(((T=($=n[0])==null?void 0:$.indexes)==null?void 0:T.length)||0)+"",s,l,o,r,a,u,f,c,d,m,_,h,b=((M=n[0])==null?void 0:M.indexes)||[],y=[];for(let O=0;Ode(c,"collection",S)),c.$on("remove",n[8]),c.$on("submit",n[9]),{c(){e=v("div"),t=U("Unique constraints and indexes ("),s=U(i),l=U(")"),o=E(),r=v("div");for(let O=0;O+ New index`,f=E(),H(c.$$.fragment),p(e,"class","section-title"),p(u,"type","button"),p(u,"class","btn btn-xs btn-transparent btn-pill btn-outline"),p(r,"class","indexes-list svelte-167lbwu")},m(O,D){w(O,e,D),g(e,t),g(e,s),g(e,l),w(O,o,D),w(O,r,D);for(let L=0;Ld=!1)),c.$set(L)},i(O){m||(A(c.$$.fragment,O),m=!0)},o(O){I(c.$$.fragment,O),m=!1},d(O){O&&k(e),O&&k(o),O&&k(r),mt(y,O),O&&k(f),n[6](null),z(c,O),_=!1,h()}}}const Yc=n=>n.name;function Z$(n,e,t){let i;Je(n,Si,m=>t(2,i=m));let{collection:s}=e,l;function o(m,_){for(let h=0;hl==null?void 0:l.show(m,_),a=()=>l==null?void 0:l.show();function u(m){te[m?"unshift":"push"](()=>{l=m,t(1,l)})}function f(m){s=m,t(0,s)}const c=m=>{for(let _=0;_{o(m.detail.old,m.detail.new)};return n.$$set=m=>{"collection"in m&&t(0,s=m.collection)},[s,l,i,o,r,a,u,f,c,d]}class G$ extends ge{constructor(e){super(),_e(this,e,Z$,J$,me,{collection:0})}}function Kc(n,e,t){const i=n.slice();return i[6]=e[t],i}function Jc(n){let e,t,i,s,l=n[6].label+"",o,r,a,u;function f(){return n[4](n[6])}function c(...d){return n[5](n[6],...d)}return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),o=U(l),r=E(),p(t,"class","icon "+n[6].icon+" svelte-1gz9b6p"),p(s,"class","txt"),p(e,"tabindex","0"),p(e,"class","dropdown-item closable svelte-1gz9b6p")},m(d,m){w(d,e,m),g(e,t),g(e,i),g(e,s),g(s,o),g(e,r),a||(u=[J(e,"click",An(f)),J(e,"keydown",An(c))],a=!0)},p(d,m){n=d},d(d){d&&k(e),a=!1,Ee(u)}}}function X$(n){let e,t=n[2],i=[];for(let s=0;s{o(u.value)},a=(u,f)=>{(f.code==="Enter"||f.code==="Space")&&o(u.value)};return n.$$set=u=>{"class"in u&&t(0,i=u.class)},[i,s,l,o,r,a]}class e4 extends ge{constructor(e){super(),_e(this,e,x$,Q$,me,{class:0})}}const t4=n=>({interactive:n&64,hasErrors:n&32}),Zc=n=>({interactive:n[6],hasErrors:n[5]}),n4=n=>({interactive:n&64,hasErrors:n&32}),Gc=n=>({interactive:n[6],hasErrors:n[5]}),i4=n=>({interactive:n&64,hasErrors:n&32}),Xc=n=>({interactive:n[6],hasErrors:n[5]}),s4=n=>({interactive:n&64,hasErrors:n&32}),Qc=n=>({interactive:n[6],hasErrors:n[5]});function xc(n){let e;return{c(){e=v("div"),e.innerHTML='',p(e,"class","drag-handle-wrapper"),p(e,"draggable",!0),p(e,"aria-label","Sort")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function ed(n){let e,t,i,s;return{c(){e=v("span"),p(e,"class","marker marker-required")},m(l,o){w(l,e,o),i||(s=Me(t=He.call(null,e,n[4])),i=!0)},p(l,o){t&&jt(t.update)&&o&16&&t.update.call(null,l[4])},d(l){l&&k(e),i=!1,s()}}}function l4(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_=n[0].required&&ed(n);return{c(){e=v("div"),_&&_.c(),t=E(),i=v("div"),s=v("i"),o=E(),r=v("input"),p(e,"class","markers"),p(s,"class",l=B.getFieldTypeIcon(n[0].type)),p(i,"class","form-field-addon prefix no-pointer-events field-type-icon"),Q(i,"txt-disabled",!n[6]),p(r,"type","text"),r.required=!0,r.disabled=a=!n[6],r.readOnly=u=n[0].id&&n[0].system,p(r,"spellcheck","false"),r.autofocus=f=!n[0].id,p(r,"placeholder","Field name"),r.value=c=n[0].name},m(h,b){w(h,e,b),_&&_.m(e,null),w(h,t,b),w(h,i,b),g(i,s),w(h,o,b),w(h,r,b),n[14](r),n[0].id||r.focus(),d||(m=J(r,"input",n[15]),d=!0)},p(h,b){h[0].required?_?_.p(h,b):(_=ed(h),_.c(),_.m(e,null)):_&&(_.d(1),_=null),b&1&&l!==(l=B.getFieldTypeIcon(h[0].type))&&p(s,"class",l),b&64&&Q(i,"txt-disabled",!h[6]),b&64&&a!==(a=!h[6])&&(r.disabled=a),b&1&&u!==(u=h[0].id&&h[0].system)&&(r.readOnly=u),b&1&&f!==(f=!h[0].id)&&(r.autofocus=f),b&1&&c!==(c=h[0].name)&&r.value!==c&&(r.value=c)},d(h){h&&k(e),_&&_.d(),h&&k(t),h&&k(i),h&&k(o),h&&k(r),n[14](null),d=!1,m()}}}function o4(n){let e;return{c(){e=v("span"),p(e,"class","separator")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function r4(n){let e,t,i,s,l;return{c(){e=v("button"),t=v("i"),p(t,"class","ri-settings-3-line"),p(e,"type","button"),p(e,"aria-label","Toggle field options"),p(e,"class",i="btn btn-sm btn-circle options-trigger "+(n[3]?"btn-secondary":"btn-transparent")),Q(e,"btn-hint",!n[3]&&!n[5]),Q(e,"btn-danger",n[5])},m(o,r){w(o,e,r),g(e,t),s||(l=J(e,"click",n[11]),s=!0)},p(o,r){r&8&&i!==(i="btn btn-sm btn-circle options-trigger "+(o[3]?"btn-secondary":"btn-transparent"))&&p(e,"class",i),r&40&&Q(e,"btn-hint",!o[3]&&!o[5]),r&40&&Q(e,"btn-danger",o[5])},d(o){o&&k(e),s=!1,l()}}}function a4(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-sm btn-circle btn-warning btn-transparent options-trigger"),p(e,"aria-label","Restore")},m(s,l){w(s,e,l),t||(i=[Me(He.call(null,e,"Restore")),J(e,"click",n[9])],t=!0)},p:x,d(s){s&&k(e),t=!1,Ee(i)}}}function td(n){let e,t,i,s,l,o,r,a,u,f,c;const d=n[13].options,m=yt(d,n,n[17],Xc),_=n[13].beforeNonempty,h=yt(_,n,n[17],Gc);r=new pe({props:{class:"form-field form-field-toggle m-0",name:"requried",$$slots:{default:[u4,({uniqueId:C})=>({23:C}),({uniqueId:C})=>C?8388608:0]},$$scope:{ctx:n}}});const b=n[13].afterNonempty,y=yt(b,n,n[17],Zc);let S=!n[0].toDelete&&nd(n);return{c(){e=v("div"),t=v("div"),i=v("div"),m&&m.c(),s=E(),h&&h.c(),l=E(),o=v("div"),H(r.$$.fragment),a=E(),y&&y.c(),u=E(),S&&S.c(),p(i,"class","col-sm-12 hidden-empty"),p(o,"class","col-sm-4"),p(t,"class","grid grid-sm"),p(e,"class","schema-field-options")},m(C,$){w(C,e,$),g(e,t),g(t,i),m&&m.m(i,null),g(t,s),h&&h.m(t,null),g(t,l),g(t,o),V(r,o,null),g(t,a),y&&y.m(t,null),g(t,u),S&&S.m(t,null),c=!0},p(C,$){m&&m.p&&(!c||$&131168)&&wt(m,d,C,C[17],c?kt(d,C[17],$,i4):St(C[17]),Xc),h&&h.p&&(!c||$&131168)&&wt(h,_,C,C[17],c?kt(_,C[17],$,n4):St(C[17]),Gc);const T={};$&8519697&&(T.$$scope={dirty:$,ctx:C}),r.$set(T),y&&y.p&&(!c||$&131168)&&wt(y,b,C,C[17],c?kt(b,C[17],$,t4):St(C[17]),Zc),C[0].toDelete?S&&(ae(),I(S,1,1,()=>{S=null}),ue()):S?(S.p(C,$),$&1&&A(S,1)):(S=nd(C),S.c(),A(S,1),S.m(t,null))},i(C){c||(A(m,C),A(h,C),A(r.$$.fragment,C),A(y,C),A(S),C&&Qe(()=>{c&&(f||(f=je(e,ot,{duration:150},!0)),f.run(1))}),c=!0)},o(C){I(m,C),I(h,C),I(r.$$.fragment,C),I(y,C),I(S),C&&(f||(f=je(e,ot,{duration:150},!1)),f.run(0)),c=!1},d(C){C&&k(e),m&&m.d(C),h&&h.d(C),z(r),y&&y.d(C),S&&S.d(),C&&f&&f.end()}}}function u4(n){let e,t,i,s,l,o,r,a,u,f,c,d;return{c(){e=v("input"),i=E(),s=v("label"),l=v("span"),o=U(n[4]),r=E(),a=v("i"),p(e,"type","checkbox"),p(e,"id",t=n[23]),p(l,"class","txt"),p(a,"class","ri-information-line link-hint"),p(s,"for",f=n[23])},m(m,_){w(m,e,_),e.checked=n[0].required,w(m,i,_),w(m,s,_),g(s,l),g(l,o),g(s,r),g(s,a),c||(d=[J(e,"change",n[16]),Me(u=He.call(null,a,{text:`Requires the field value NOT to be ${B.zeroDefaultStr(n[0])}.`,position:"right"}))],c=!0)},p(m,_){_&8388608&&t!==(t=m[23])&&p(e,"id",t),_&1&&(e.checked=m[0].required),_&16&&se(o,m[4]),u&&jt(u.update)&&_&1&&u.update.call(null,{text:`Requires the field value NOT to be ${B.zeroDefaultStr(m[0])}.`,position:"right"}),_&8388608&&f!==(f=m[23])&&p(s,"for",f)},d(m){m&&k(e),m&&k(i),m&&k(s),c=!1,Ee(d)}}}function nd(n){let e,t,i,s,l,o,r,a,u;return a=new Kn({props:{class:"dropdown dropdown-sm dropdown-upside dropdown-right dropdown-nowrap no-min-width",$$slots:{default:[f4]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),i=E(),s=v("div"),l=v("button"),o=v("i"),r=E(),H(a.$$.fragment),p(t,"class","flex-fill"),p(o,"class","ri-more-line"),p(l,"type","button"),p(l,"aria-label","More"),p(l,"class","btn btn-circle btn-sm btn-transparent"),p(s,"class","inline-flex flex-gap-sm flex-nowrap"),p(e,"class","col-sm-4 m-l-auto txt-right")},m(f,c){w(f,e,c),g(e,t),g(e,i),g(e,s),g(s,l),g(l,o),g(l,r),V(a,l,null),u=!0},p(f,c){const d={};c&131072&&(d.$$scope={dirty:c,ctx:f}),a.$set(d)},i(f){u||(A(a.$$.fragment,f),u=!0)},o(f){I(a.$$.fragment,f),u=!1},d(f){f&&k(e),z(a)}}}function f4(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='Remove',p(e,"type","button"),p(e,"class","dropdown-item txt-right")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[8]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function c4(n){let e,t,i,s,l,o,r,a,u,f=n[6]&&xc();s=new pe({props:{class:"form-field required m-0 "+(n[6]?"":"disabled"),name:"schema."+n[1]+".name",inlineError:!0,$$slots:{default:[l4]},$$scope:{ctx:n}}});const c=n[13].default,d=yt(c,n,n[17],Qc),m=d||o4();function _(S,C){if(S[0].toDelete)return a4;if(S[6])return r4}let h=_(n),b=h&&h(n),y=n[6]&&n[3]&&td(n);return{c(){e=v("div"),t=v("div"),f&&f.c(),i=E(),H(s.$$.fragment),l=E(),m&&m.c(),o=E(),b&&b.c(),r=E(),y&&y.c(),p(t,"class","schema-field-header"),p(e,"class","schema-field"),Q(e,"required",n[0].required),Q(e,"expanded",n[6]&&n[3]),Q(e,"deleted",n[0].toDelete)},m(S,C){w(S,e,C),g(e,t),f&&f.m(t,null),g(t,i),V(s,t,null),g(t,l),m&&m.m(t,null),g(t,o),b&&b.m(t,null),g(e,r),y&&y.m(e,null),u=!0},p(S,[C]){S[6]?f||(f=xc(),f.c(),f.m(t,i)):f&&(f.d(1),f=null);const $={};C&64&&($.class="form-field required m-0 "+(S[6]?"":"disabled")),C&2&&($.name="schema."+S[1]+".name"),C&131157&&($.$$scope={dirty:C,ctx:S}),s.$set($),d&&d.p&&(!u||C&131168)&&wt(d,c,S,S[17],u?kt(c,S[17],C,s4):St(S[17]),Qc),h===(h=_(S))&&b?b.p(S,C):(b&&b.d(1),b=h&&h(S),b&&(b.c(),b.m(t,null))),S[6]&&S[3]?y?(y.p(S,C),C&72&&A(y,1)):(y=td(S),y.c(),A(y,1),y.m(e,null)):y&&(ae(),I(y,1,1,()=>{y=null}),ue()),(!u||C&1)&&Q(e,"required",S[0].required),(!u||C&72)&&Q(e,"expanded",S[6]&&S[3]),(!u||C&1)&&Q(e,"deleted",S[0].toDelete)},i(S){u||(A(s.$$.fragment,S),A(m,S),A(y),S&&Qe(()=>{u&&(a||(a=je(e,ot,{duration:150},!0)),a.run(1))}),u=!0)},o(S){I(s.$$.fragment,S),I(m,S),I(y),S&&(a||(a=je(e,ot,{duration:150},!1)),a.run(0)),u=!1},d(S){S&&k(e),f&&f.d(),z(s),m&&m.d(S),b&&b.d(),y&&y.d(),S&&a&&a.end()}}}let Dr=[];function d4(n,e,t){let i,s,l,o;Je(n,Si,P=>t(12,o=P));let{$$slots:r={},$$scope:a}=e;const u="f_"+B.randomString(8),f=$t(),c={bool:"Nonfalsey",number:"Nonzero"};let{key:d=""}=e,{field:m=new kn}=e,_,h=!1;function b(){m.id?t(0,m.toDelete=!0,m):f("remove")}function y(){t(0,m.toDelete=!1,m),en({})}function S(P){return B.slugify(P)}function C(){t(3,h=!0),M()}function $(){t(3,h=!1)}function T(){h?$():C()}function M(){for(let P of Dr)P.id!=u&&P.collapse()}Gt(()=>(Dr.push({id:u,collapse:$}),m.onMountSelect&&(t(0,m.onMountSelect=!1,m),_==null||_.select()),()=>{B.removeByKey(Dr,"id",u)}));function O(P){te[P?"unshift":"push"](()=>{_=P,t(2,_)})}const D=P=>{const N=m.name;t(0,m.name=S(P.target.value),m),P.target.value=m.name,f("rename",{oldName:N,newName:m.name})};function L(){m.required=this.checked,t(0,m)}return n.$$set=P=>{"key"in P&&t(1,d=P.key),"field"in P&&t(0,m=P.field),"$$scope"in P&&t(17,a=P.$$scope)},n.$$.update=()=>{n.$$.dirty&1&&m.toDelete&&m.originalName&&m.name!==m.originalName&&t(0,m.name=m.originalName,m),n.$$.dirty&1&&!m.originalName&&m.name&&t(0,m.originalName=m.name,m),n.$$.dirty&1&&typeof m.toDelete>"u"&&t(0,m.toDelete=!1,m),n.$$.dirty&1&&m.required&&t(0,m.nullable=!1,m),n.$$.dirty&1&&t(6,i=!m.toDelete&&!(m.id&&m.system)),n.$$.dirty&4098&&t(5,s=!B.isEmpty(B.getNestedVal(o,`schema.${d}`))),n.$$.dirty&1&&t(4,l=c[m==null?void 0:m.type]||"Nonempty")},[m,d,_,h,l,s,i,f,b,y,S,T,o,r,O,D,L,a]}class di extends ge{constructor(e){super(),_e(this,e,d4,c4,me,{key:1,field:0})}}function p4(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Min length"),s=E(),l=v("input"),p(e,"for",i=n[9]),p(l,"type","number"),p(l,"id",o=n[9]),p(l,"step","1"),p(l,"min","0")},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].options.min),r||(a=J(l,"input",n[3]),r=!0)},p(u,f){f&512&&i!==(i=u[9])&&p(e,"for",i),f&512&&o!==(o=u[9])&&p(l,"id",o),f&1&&dt(l.value)!==u[0].options.min&&re(l,u[0].options.min)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function m4(n){let e,t,i,s,l,o,r,a,u;return{c(){e=v("label"),t=U("Max length"),s=E(),l=v("input"),p(e,"for",i=n[9]),p(l,"type","number"),p(l,"id",o=n[9]),p(l,"step","1"),p(l,"min",r=n[0].options.min||0)},m(f,c){w(f,e,c),g(e,t),w(f,s,c),w(f,l,c),re(l,n[0].options.max),a||(u=J(l,"input",n[4]),a=!0)},p(f,c){c&512&&i!==(i=f[9])&&p(e,"for",i),c&512&&o!==(o=f[9])&&p(l,"id",o),c&1&&r!==(r=f[0].options.min||0)&&p(l,"min",r),c&1&&dt(l.value)!==f[0].options.max&&re(l,f[0].options.max)},d(f){f&&k(e),f&&k(s),f&&k(l),a=!1,u()}}}function h4(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Regex pattern"),s=E(),l=v("input"),p(e,"for",i=n[9]),p(l,"type","text"),p(l,"id",o=n[9]),p(l,"placeholder","Valid Go regular expression, eg. ^\\w+$")},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].options.pattern),r||(a=J(l,"input",n[5]),r=!0)},p(u,f){f&512&&i!==(i=u[9])&&p(e,"for",i),f&512&&o!==(o=u[9])&&p(l,"id",o),f&1&&l.value!==u[0].options.pattern&&re(l,u[0].options.pattern)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function _4(n){let e,t,i,s,l,o,r,a,u,f;return i=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.min",$$slots:{default:[p4,({uniqueId:c})=>({9:c}),({uniqueId:c})=>c?512:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.max",$$slots:{default:[m4,({uniqueId:c})=>({9:c}),({uniqueId:c})=>c?512:0]},$$scope:{ctx:n}}}),u=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.pattern",$$slots:{default:[h4,({uniqueId:c})=>({9:c}),({uniqueId:c})=>c?512:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),p(t,"class","col-sm-3"),p(l,"class","col-sm-3"),p(a,"class","col-sm-6"),p(e,"class","grid grid-sm")},m(c,d){w(c,e,d),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),V(u,a,null),f=!0},p(c,d){const m={};d&2&&(m.name="schema."+c[1]+".options.min"),d&1537&&(m.$$scope={dirty:d,ctx:c}),i.$set(m);const _={};d&2&&(_.name="schema."+c[1]+".options.max"),d&1537&&(_.$$scope={dirty:d,ctx:c}),o.$set(_);const h={};d&2&&(h.name="schema."+c[1]+".options.pattern"),d&1537&&(h.$$scope={dirty:d,ctx:c}),u.$set(h)},i(c){f||(A(i.$$.fragment,c),A(o.$$.fragment,c),A(u.$$.fragment,c),f=!0)},o(c){I(i.$$.fragment,c),I(o.$$.fragment,c),I(u.$$.fragment,c),f=!1},d(c){c&&k(e),z(i),z(o),z(u)}}}function g4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[6](r)}let o={$$slots:{options:[_4]},$$scope:{ctx:n}};for(let r=0;rde(e,"field",l)),e.$on("rename",n[7]),e.$on("remove",n[8]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};a&1027&&(u.$$scope={dirty:a,ctx:r}),!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function b4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(){l.options.min=dt(this.value),t(0,l)}function a(){l.options.max=dt(this.value),t(0,l)}function u(){l.options.pattern=this.value,t(0,l)}function f(m){l=m,t(0,l)}function c(m){Ne.call(this,n,m)}function d(m){Ne.call(this,n,m)}return n.$$set=m=>{e=qe(qe({},e),Zt(m)),t(2,s=xe(e,i)),"field"in m&&t(0,l=m.field),"key"in m&&t(1,o=m.key)},[l,o,s,r,a,u,f,c,d]}class v4 extends ge{constructor(e){super(),_e(this,e,b4,g4,me,{field:0,key:1})}}function y4(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Min"),s=E(),l=v("input"),p(e,"for",i=n[8]),p(l,"type","number"),p(l,"id",o=n[8])},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].options.min),r||(a=J(l,"input",n[3]),r=!0)},p(u,f){f&256&&i!==(i=u[8])&&p(e,"for",i),f&256&&o!==(o=u[8])&&p(l,"id",o),f&1&&dt(l.value)!==u[0].options.min&&re(l,u[0].options.min)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function k4(n){let e,t,i,s,l,o,r,a,u;return{c(){e=v("label"),t=U("Max"),s=E(),l=v("input"),p(e,"for",i=n[8]),p(l,"type","number"),p(l,"id",o=n[8]),p(l,"min",r=n[0].options.min)},m(f,c){w(f,e,c),g(e,t),w(f,s,c),w(f,l,c),re(l,n[0].options.max),a||(u=J(l,"input",n[4]),a=!0)},p(f,c){c&256&&i!==(i=f[8])&&p(e,"for",i),c&256&&o!==(o=f[8])&&p(l,"id",o),c&1&&r!==(r=f[0].options.min)&&p(l,"min",r),c&1&&dt(l.value)!==f[0].options.max&&re(l,f[0].options.max)},d(f){f&&k(e),f&&k(s),f&&k(l),a=!1,u()}}}function w4(n){let e,t,i,s,l,o,r;return i=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.min",$$slots:{default:[y4,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.max",$$slots:{default:[k4,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),p(t,"class","col-sm-6"),p(l,"class","col-sm-6"),p(e,"class","grid grid-sm")},m(a,u){w(a,e,u),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),r=!0},p(a,u){const f={};u&2&&(f.name="schema."+a[1]+".options.min"),u&769&&(f.$$scope={dirty:u,ctx:a}),i.$set(f);const c={};u&2&&(c.name="schema."+a[1]+".options.max"),u&769&&(c.$$scope={dirty:u,ctx:a}),o.$set(c)},i(a){r||(A(i.$$.fragment,a),A(o.$$.fragment,a),r=!0)},o(a){I(i.$$.fragment,a),I(o.$$.fragment,a),r=!1},d(a){a&&k(e),z(i),z(o)}}}function S4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[5](r)}let o={$$slots:{options:[w4]},$$scope:{ctx:n}};for(let r=0;rde(e,"field",l)),e.$on("rename",n[6]),e.$on("remove",n[7]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};a&515&&(u.$$scope={dirty:a,ctx:r}),!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function $4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(){l.options.min=dt(this.value),t(0,l)}function a(){l.options.max=dt(this.value),t(0,l)}function u(d){l=d,t(0,l)}function f(d){Ne.call(this,n,d)}function c(d){Ne.call(this,n,d)}return n.$$set=d=>{e=qe(qe({},e),Zt(d)),t(2,s=xe(e,i)),"field"in d&&t(0,l=d.field),"key"in d&&t(1,o=d.key)},[l,o,s,r,a,u,f,c]}class C4 extends ge{constructor(e){super(),_e(this,e,$4,S4,me,{field:0,key:1})}}function T4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[3](r)}let o={};for(let r=0;rde(e,"field",l)),e.$on("rename",n[4]),e.$on("remove",n[5]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function M4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(f){l=f,t(0,l)}function a(f){Ne.call(this,n,f)}function u(f){Ne.call(this,n,f)}return n.$$set=f=>{e=qe(qe({},e),Zt(f)),t(2,s=xe(e,i)),"field"in f&&t(0,l=f.field),"key"in f&&t(1,o=f.key)},[l,o,s,r,a,u]}class O4 extends ge{constructor(e){super(),_e(this,e,M4,T4,me,{field:0,key:1})}}function E4(n){let e,t,i,s,l=[{type:t=n[5].type||"text"},{value:n[4]},{disabled:n[3]},{readOnly:n[2]},n[5]],o={};for(let r=0;r{t(0,o=B.splitNonEmpty(c.target.value,r))};return n.$$set=c=>{e=qe(qe({},e),Zt(c)),t(5,l=xe(e,s)),"value"in c&&t(0,o=c.value),"separator"in c&&t(1,r=c.separator),"readonly"in c&&t(2,a=c.readonly),"disabled"in c&&t(3,u=c.disabled)},n.$$.update=()=>{n.$$.dirty&1&&t(4,i=(o||[]).join(", "))},[o,r,a,u,i,l,f]}class Vs extends ge{constructor(e){super(),_e(this,e,D4,E4,me,{value:0,separator:1,readonly:2,disabled:3})}}function A4(n){let e,t,i,s,l,o,r,a,u,f,c,d,m;function _(b){n[3](b)}let h={id:n[8],disabled:!B.isEmpty(n[0].options.onlyDomains)};return n[0].options.exceptDomains!==void 0&&(h.value=n[0].options.exceptDomains),r=new Vs({props:h}),te.push(()=>de(r,"value",_)),{c(){e=v("label"),t=v("span"),t.textContent="Except domains",i=E(),s=v("i"),o=E(),H(r.$$.fragment),u=E(),f=v("div"),f.textContent="Use comma as separator.",p(t,"class","txt"),p(s,"class","ri-information-line link-hint"),p(e,"for",l=n[8]),p(f,"class","help-block")},m(b,y){w(b,e,y),g(e,t),g(e,i),g(e,s),w(b,o,y),V(r,b,y),w(b,u,y),w(b,f,y),c=!0,d||(m=Me(He.call(null,s,{text:`List of domains that are NOT allowed. This field is disabled if "Only domains" is set.`,position:"top"})),d=!0)},p(b,y){(!c||y&256&&l!==(l=b[8]))&&p(e,"for",l);const S={};y&256&&(S.id=b[8]),y&1&&(S.disabled=!B.isEmpty(b[0].options.onlyDomains)),!a&&y&1&&(a=!0,S.value=b[0].options.exceptDomains,he(()=>a=!1)),r.$set(S)},i(b){c||(A(r.$$.fragment,b),c=!0)},o(b){I(r.$$.fragment,b),c=!1},d(b){b&&k(e),b&&k(o),z(r,b),b&&k(u),b&&k(f),d=!1,m()}}}function I4(n){let e,t,i,s,l,o,r,a,u,f,c,d,m;function _(b){n[4](b)}let h={id:n[8]+".options.onlyDomains",disabled:!B.isEmpty(n[0].options.exceptDomains)};return n[0].options.onlyDomains!==void 0&&(h.value=n[0].options.onlyDomains),r=new Vs({props:h}),te.push(()=>de(r,"value",_)),{c(){e=v("label"),t=v("span"),t.textContent="Only domains",i=E(),s=v("i"),o=E(),H(r.$$.fragment),u=E(),f=v("div"),f.textContent="Use comma as separator.",p(t,"class","txt"),p(s,"class","ri-information-line link-hint"),p(e,"for",l=n[8]+".options.onlyDomains"),p(f,"class","help-block")},m(b,y){w(b,e,y),g(e,t),g(e,i),g(e,s),w(b,o,y),V(r,b,y),w(b,u,y),w(b,f,y),c=!0,d||(m=Me(He.call(null,s,{text:`List of domains that are ONLY allowed. This field is disabled if "Except domains" is set.`,position:"top"})),d=!0)},p(b,y){(!c||y&256&&l!==(l=b[8]+".options.onlyDomains"))&&p(e,"for",l);const S={};y&256&&(S.id=b[8]+".options.onlyDomains"),y&1&&(S.disabled=!B.isEmpty(b[0].options.exceptDomains)),!a&&y&1&&(a=!0,S.value=b[0].options.onlyDomains,he(()=>a=!1)),r.$set(S)},i(b){c||(A(r.$$.fragment,b),c=!0)},o(b){I(r.$$.fragment,b),c=!1},d(b){b&&k(e),b&&k(o),z(r,b),b&&k(u),b&&k(f),d=!1,m()}}}function L4(n){let e,t,i,s,l,o,r;return i=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.exceptDomains",$$slots:{default:[A4,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field",name:"schema."+n[1]+".options.onlyDomains",$$slots:{default:[I4,({uniqueId:a})=>({8:a}),({uniqueId:a})=>a?256:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),p(t,"class","col-sm-6"),p(l,"class","col-sm-6"),p(e,"class","grid grid-sm")},m(a,u){w(a,e,u),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),r=!0},p(a,u){const f={};u&2&&(f.name="schema."+a[1]+".options.exceptDomains"),u&769&&(f.$$scope={dirty:u,ctx:a}),i.$set(f);const c={};u&2&&(c.name="schema."+a[1]+".options.onlyDomains"),u&769&&(c.$$scope={dirty:u,ctx:a}),o.$set(c)},i(a){r||(A(i.$$.fragment,a),A(o.$$.fragment,a),r=!0)},o(a){I(i.$$.fragment,a),I(o.$$.fragment,a),r=!1},d(a){a&&k(e),z(i),z(o)}}}function P4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[5](r)}let o={$$slots:{options:[L4]},$$scope:{ctx:n}};for(let r=0;rde(e,"field",l)),e.$on("rename",n[6]),e.$on("remove",n[7]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};a&515&&(u.$$scope={dirty:a,ctx:r}),!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function N4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(d){n.$$.not_equal(l.options.exceptDomains,d)&&(l.options.exceptDomains=d,t(0,l))}function a(d){n.$$.not_equal(l.options.onlyDomains,d)&&(l.options.onlyDomains=d,t(0,l))}function u(d){l=d,t(0,l)}function f(d){Ne.call(this,n,d)}function c(d){Ne.call(this,n,d)}return n.$$set=d=>{e=qe(qe({},e),Zt(d)),t(2,s=xe(e,i)),"field"in d&&t(0,l=d.field),"key"in d&&t(1,o=d.key)},[l,o,s,r,a,u,f,c]}class w1 extends ge{constructor(e){super(),_e(this,e,N4,P4,me,{field:0,key:1})}}function F4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[3](r)}let o={};for(let r=0;rde(e,"field",l)),e.$on("rename",n[4]),e.$on("remove",n[5]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function R4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(f){l=f,t(0,l)}function a(f){Ne.call(this,n,f)}function u(f){Ne.call(this,n,f)}return n.$$set=f=>{e=qe(qe({},e),Zt(f)),t(2,s=xe(e,i)),"field"in f&&t(0,l=f.field),"key"in f&&t(1,o=f.key)},[l,o,s,r,a,u]}class q4 extends ge{constructor(e){super(),_e(this,e,R4,F4,me,{field:0,key:1})}}function j4(n){let e,t,i;const s=[{key:n[1]},n[2]];function l(r){n[3](r)}let o={};for(let r=0;rde(e,"field",l)),e.$on("rename",n[4]),e.$on("remove",n[5]),{c(){H(e.$$.fragment)},m(r,a){V(e,r,a),i=!0},p(r,[a]){const u=a&6?Mt(s,[a&2&&{key:r[1]},a&4&&Xt(r[2])]):{};!t&&a&1&&(t=!0,u.field=r[0],he(()=>t=!1)),e.$set(u)},i(r){i||(A(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){z(e,r)}}}function V4(n,e,t){const i=["field","key"];let s=xe(e,i),{field:l}=e,{key:o=""}=e;function r(f){l=f,t(0,l)}function a(f){Ne.call(this,n,f)}function u(f){Ne.call(this,n,f)}return n.$$set=f=>{e=qe(qe({},e),Zt(f)),t(2,s=xe(e,i)),"field"in f&&t(0,l=f.field),"key"in f&&t(1,o=f.key)},[l,o,s,r,a,u]}class z4 extends ge{constructor(e){super(),_e(this,e,V4,j4,me,{field:0,key:1})}}var Ar=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],Ts={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(n){return typeof console<"u"&&console.warn(n)},getWeek:function(n){var e=new Date(n.getTime());e.setHours(0,0,0,0),e.setDate(e.getDate()+3-(e.getDay()+6)%7);var t=new Date(e.getFullYear(),0,4);return 1+Math.round(((e.getTime()-t.getTime())/864e5-3+(t.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},yl={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(n){var e=n%100;if(e>3&&e<21)return"th";switch(e%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},_n=function(n,e){return e===void 0&&(e=2),("000"+n).slice(e*-1)},jn=function(n){return n===!0?1:0};function id(n,e){var t;return function(){var i=this,s=arguments;clearTimeout(t),t=setTimeout(function(){return n.apply(i,s)},e)}}var Ir=function(n){return n instanceof Array?n:[n]};function dn(n,e,t){if(t===!0)return n.classList.add(e);n.classList.remove(e)}function ft(n,e,t){var i=window.document.createElement(n);return e=e||"",t=t||"",i.className=e,t!==void 0&&(i.textContent=t),i}function so(n){for(;n.firstChild;)n.removeChild(n.firstChild)}function S1(n,e){if(e(n))return n;if(n.parentNode)return S1(n.parentNode,e)}function lo(n,e){var t=ft("div","numInputWrapper"),i=ft("input","numInput "+n),s=ft("span","arrowUp"),l=ft("span","arrowDown");if(navigator.userAgent.indexOf("MSIE 9.0")===-1?i.type="number":(i.type="text",i.pattern="\\d*"),e!==void 0)for(var o in e)i.setAttribute(o,e[o]);return t.appendChild(i),t.appendChild(s),t.appendChild(l),t}function Tn(n){try{if(typeof n.composedPath=="function"){var e=n.composedPath();return e[0]}return n.target}catch{return n.target}}var Lr=function(){},Ro=function(n,e,t){return t.months[e?"shorthand":"longhand"][n]},H4={D:Lr,F:function(n,e,t){n.setMonth(t.months.longhand.indexOf(e))},G:function(n,e){n.setHours((n.getHours()>=12?12:0)+parseFloat(e))},H:function(n,e){n.setHours(parseFloat(e))},J:function(n,e){n.setDate(parseFloat(e))},K:function(n,e,t){n.setHours(n.getHours()%12+12*jn(new RegExp(t.amPM[1],"i").test(e)))},M:function(n,e,t){n.setMonth(t.months.shorthand.indexOf(e))},S:function(n,e){n.setSeconds(parseFloat(e))},U:function(n,e){return new Date(parseFloat(e)*1e3)},W:function(n,e,t){var i=parseInt(e),s=new Date(n.getFullYear(),0,2+(i-1)*7,0,0,0,0);return s.setDate(s.getDate()-s.getDay()+t.firstDayOfWeek),s},Y:function(n,e){n.setFullYear(parseFloat(e))},Z:function(n,e){return new Date(e)},d:function(n,e){n.setDate(parseFloat(e))},h:function(n,e){n.setHours((n.getHours()>=12?12:0)+parseFloat(e))},i:function(n,e){n.setMinutes(parseFloat(e))},j:function(n,e){n.setDate(parseFloat(e))},l:Lr,m:function(n,e){n.setMonth(parseFloat(e)-1)},n:function(n,e){n.setMonth(parseFloat(e)-1)},s:function(n,e){n.setSeconds(parseFloat(e))},u:function(n,e){return new Date(parseFloat(e))},w:Lr,y:function(n,e){n.setFullYear(2e3+parseFloat(e))}},xi={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},cl={Z:function(n){return n.toISOString()},D:function(n,e,t){return e.weekdays.shorthand[cl.w(n,e,t)]},F:function(n,e,t){return Ro(cl.n(n,e,t)-1,!1,e)},G:function(n,e,t){return _n(cl.h(n,e,t))},H:function(n){return _n(n.getHours())},J:function(n,e){return e.ordinal!==void 0?n.getDate()+e.ordinal(n.getDate()):n.getDate()},K:function(n,e){return e.amPM[jn(n.getHours()>11)]},M:function(n,e){return Ro(n.getMonth(),!0,e)},S:function(n){return _n(n.getSeconds())},U:function(n){return n.getTime()/1e3},W:function(n,e,t){return t.getWeek(n)},Y:function(n){return _n(n.getFullYear(),4)},d:function(n){return _n(n.getDate())},h:function(n){return n.getHours()%12?n.getHours()%12:12},i:function(n){return _n(n.getMinutes())},j:function(n){return n.getDate()},l:function(n,e){return e.weekdays.longhand[n.getDay()]},m:function(n){return _n(n.getMonth()+1)},n:function(n){return n.getMonth()+1},s:function(n){return n.getSeconds()},u:function(n){return n.getTime()},w:function(n){return n.getDay()},y:function(n){return String(n.getFullYear()).substring(2)}},$1=function(n){var e=n.config,t=e===void 0?Ts:e,i=n.l10n,s=i===void 0?yl:i,l=n.isMobile,o=l===void 0?!1:l;return function(r,a,u){var f=u||s;return t.formatDate!==void 0&&!o?t.formatDate(r,a,f):a.split("").map(function(c,d,m){return cl[c]&&m[d-1]!=="\\"?cl[c](r,f,t):c!=="\\"?c:""}).join("")}},ba=function(n){var e=n.config,t=e===void 0?Ts:e,i=n.l10n,s=i===void 0?yl:i;return function(l,o,r,a){if(!(l!==0&&!l)){var u=a||s,f,c=l;if(l instanceof Date)f=new Date(l.getTime());else if(typeof l!="string"&&l.toFixed!==void 0)f=new Date(l);else if(typeof l=="string"){var d=o||(t||Ts).dateFormat,m=String(l).trim();if(m==="today")f=new Date,r=!0;else if(t&&t.parseDate)f=t.parseDate(l,d);else if(/Z$/.test(m)||/GMT$/.test(m))f=new Date(l);else{for(var _=void 0,h=[],b=0,y=0,S="";bMath.min(e,t)&&n=0?new Date:new Date(t.config.minDate.getTime()),ne=Nr(t.config);Z.setHours(ne.hours,ne.minutes,ne.seconds,Z.getMilliseconds()),t.selectedDates=[Z],t.latestSelectedDateObj=Z}K!==void 0&&K.type!=="blur"&&Rl(K);var oe=t._input.value;c(),nn(),t._input.value!==oe&&t._debouncedChange()}function u(K,Z){return K%12+12*jn(Z===t.l10n.amPM[1])}function f(K){switch(K%24){case 0:case 12:return 12;default:return K%12}}function c(){if(!(t.hourElement===void 0||t.minuteElement===void 0)){var K=(parseInt(t.hourElement.value.slice(-2),10)||0)%24,Z=(parseInt(t.minuteElement.value,10)||0)%60,ne=t.secondElement!==void 0?(parseInt(t.secondElement.value,10)||0)%60:0;t.amPM!==void 0&&(K=u(K,t.amPM.textContent));var oe=t.config.minTime!==void 0||t.config.minDate&&t.minDateHasTime&&t.latestSelectedDateObj&&Mn(t.latestSelectedDateObj,t.config.minDate,!0)===0,Ce=t.config.maxTime!==void 0||t.config.maxDate&&t.maxDateHasTime&&t.latestSelectedDateObj&&Mn(t.latestSelectedDateObj,t.config.maxDate,!0)===0;if(t.config.maxTime!==void 0&&t.config.minTime!==void 0&&t.config.minTime>t.config.maxTime){var Ie=Pr(t.config.minTime.getHours(),t.config.minTime.getMinutes(),t.config.minTime.getSeconds()),Pe=Pr(t.config.maxTime.getHours(),t.config.maxTime.getMinutes(),t.config.maxTime.getSeconds()),Oe=Pr(K,Z,ne);if(Oe>Pe&&Oe=12)]),t.secondElement!==void 0&&(t.secondElement.value=_n(ne)))}function _(K){var Z=Tn(K),ne=parseInt(Z.value)+(K.delta||0);(ne/1e3>1||K.key==="Enter"&&!/[^\d]/.test(ne.toString()))&&ke(ne)}function h(K,Z,ne,oe){if(Z instanceof Array)return Z.forEach(function(Ce){return h(K,Ce,ne,oe)});if(K instanceof Array)return K.forEach(function(Ce){return h(Ce,Z,ne,oe)});K.addEventListener(Z,ne,oe),t._handlers.push({remove:function(){return K.removeEventListener(Z,ne,oe)}})}function b(){Fe("onChange")}function y(){if(t.config.wrap&&["open","close","toggle","clear"].forEach(function(ne){Array.prototype.forEach.call(t.element.querySelectorAll("[data-"+ne+"]"),function(oe){return h(oe,"click",t[ne])})}),t.isMobile){ve();return}var K=id(we,50);if(t._debouncedChange=id(b,Y4),t.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&h(t.daysContainer,"mouseover",function(ne){t.config.mode==="range"&&Ye(Tn(ne))}),h(t._input,"keydown",Ge),t.calendarContainer!==void 0&&h(t.calendarContainer,"keydown",Ge),!t.config.inline&&!t.config.static&&h(window,"resize",K),window.ontouchstart!==void 0?h(window.document,"touchstart",Be):h(window.document,"mousedown",Be),h(window.document,"focus",Be,{capture:!0}),t.config.clickOpens===!0&&(h(t._input,"focus",t.open),h(t._input,"click",t.open)),t.daysContainer!==void 0&&(h(t.monthNav,"click",cn),h(t.monthNav,["keyup","increment"],_),h(t.daysContainer,"click",ei)),t.timeContainer!==void 0&&t.minuteElement!==void 0&&t.hourElement!==void 0){var Z=function(ne){return Tn(ne).select()};h(t.timeContainer,["increment"],a),h(t.timeContainer,"blur",a,{capture:!0}),h(t.timeContainer,"click",C),h([t.hourElement,t.minuteElement],["focus","click"],Z),t.secondElement!==void 0&&h(t.secondElement,"focus",function(){return t.secondElement&&t.secondElement.select()}),t.amPM!==void 0&&h(t.amPM,"click",function(ne){a(ne)})}t.config.allowInput&&h(t._input,"blur",ht)}function S(K,Z){var ne=K!==void 0?t.parseDate(K):t.latestSelectedDateObj||(t.config.minDate&&t.config.minDate>t.now?t.config.minDate:t.config.maxDate&&t.config.maxDate1),t.calendarContainer.appendChild(K);var Ce=t.config.appendTo!==void 0&&t.config.appendTo.nodeType!==void 0;if((t.config.inline||t.config.static)&&(t.calendarContainer.classList.add(t.config.inline?"inline":"static"),t.config.inline&&(!Ce&&t.element.parentNode?t.element.parentNode.insertBefore(t.calendarContainer,t._input.nextSibling):t.config.appendTo!==void 0&&t.config.appendTo.appendChild(t.calendarContainer)),t.config.static)){var Ie=ft("div","flatpickr-wrapper");t.element.parentNode&&t.element.parentNode.insertBefore(Ie,t.element),Ie.appendChild(t.element),t.altInput&&Ie.appendChild(t.altInput),Ie.appendChild(t.calendarContainer)}!t.config.static&&!t.config.inline&&(t.config.appendTo!==void 0?t.config.appendTo:window.document.body).appendChild(t.calendarContainer)}function M(K,Z,ne,oe){var Ce=Te(Z,!0),Ie=ft("span",K,Z.getDate().toString());return Ie.dateObj=Z,Ie.$i=oe,Ie.setAttribute("aria-label",t.formatDate(Z,t.config.ariaDateFormat)),K.indexOf("hidden")===-1&&Mn(Z,t.now)===0&&(t.todayDateElem=Ie,Ie.classList.add("today"),Ie.setAttribute("aria-current","date")),Ce?(Ie.tabIndex=-1,Ot(Z)&&(Ie.classList.add("selected"),t.selectedDateElem=Ie,t.config.mode==="range"&&(dn(Ie,"startRange",t.selectedDates[0]&&Mn(Z,t.selectedDates[0],!0)===0),dn(Ie,"endRange",t.selectedDates[1]&&Mn(Z,t.selectedDates[1],!0)===0),K==="nextMonthDay"&&Ie.classList.add("inRange")))):Ie.classList.add("flatpickr-disabled"),t.config.mode==="range"&&$n(Z)&&!Ot(Z)&&Ie.classList.add("inRange"),t.weekNumbers&&t.config.showMonths===1&&K!=="prevMonthDay"&&oe%7===6&&t.weekNumbers.insertAdjacentHTML("beforeend",""+t.config.getWeek(Z)+""),Fe("onDayCreate",Ie),Ie}function O(K){K.focus(),t.config.mode==="range"&&Ye(K)}function D(K){for(var Z=K>0?0:t.config.showMonths-1,ne=K>0?t.config.showMonths:-1,oe=Z;oe!=ne;oe+=K)for(var Ce=t.daysContainer.children[oe],Ie=K>0?0:Ce.children.length-1,Pe=K>0?Ce.children.length:-1,Oe=Ie;Oe!=Pe;Oe+=K){var Ke=Ce.children[Oe];if(Ke.className.indexOf("hidden")===-1&&Te(Ke.dateObj))return Ke}}function L(K,Z){for(var ne=K.className.indexOf("Month")===-1?K.dateObj.getMonth():t.currentMonth,oe=Z>0?t.config.showMonths:-1,Ce=Z>0?1:-1,Ie=ne-t.currentMonth;Ie!=oe;Ie+=Ce)for(var Pe=t.daysContainer.children[Ie],Oe=ne-t.currentMonth===Ie?K.$i+Z:Z<0?Pe.children.length-1:0,Ke=Pe.children.length,Re=Oe;Re>=0&&Re0?Ke:-1);Re+=Ce){var We=Pe.children[Re];if(We.className.indexOf("hidden")===-1&&Te(We.dateObj)&&Math.abs(K.$i-Re)>=Math.abs(Z))return O(We)}t.changeMonth(Ce),P(D(Ce),0)}function P(K,Z){var ne=l(),oe=Ze(ne||document.body),Ce=K!==void 0?K:oe?ne:t.selectedDateElem!==void 0&&Ze(t.selectedDateElem)?t.selectedDateElem:t.todayDateElem!==void 0&&Ze(t.todayDateElem)?t.todayDateElem:D(Z>0?1:-1);Ce===void 0?t._input.focus():oe?L(Ce,Z):O(Ce)}function N(K,Z){for(var ne=(new Date(K,Z,1).getDay()-t.l10n.firstDayOfWeek+7)%7,oe=t.utils.getDaysInMonth((Z-1+12)%12,K),Ce=t.utils.getDaysInMonth(Z,K),Ie=window.document.createDocumentFragment(),Pe=t.config.showMonths>1,Oe=Pe?"prevMonthDay hidden":"prevMonthDay",Ke=Pe?"nextMonthDay hidden":"nextMonthDay",Re=oe+1-ne,We=0;Re<=oe;Re++,We++)Ie.appendChild(M("flatpickr-day "+Oe,new Date(K,Z-1,Re),Re,We));for(Re=1;Re<=Ce;Re++,We++)Ie.appendChild(M("flatpickr-day",new Date(K,Z,Re),Re,We));for(var vt=Ce+1;vt<=42-ne&&(t.config.showMonths===1||We%7!==0);vt++,We++)Ie.appendChild(M("flatpickr-day "+Ke,new Date(K,Z+1,vt%Ce),vt,We));var ni=ft("div","dayContainer");return ni.appendChild(Ie),ni}function F(){if(t.daysContainer!==void 0){so(t.daysContainer),t.weekNumbers&&so(t.weekNumbers);for(var K=document.createDocumentFragment(),Z=0;Z1||t.config.monthSelectorType!=="dropdown")){var K=function(oe){return t.config.minDate!==void 0&&t.currentYear===t.config.minDate.getFullYear()&&oet.config.maxDate.getMonth())};t.monthsDropdownContainer.tabIndex=-1,t.monthsDropdownContainer.innerHTML="";for(var Z=0;Z<12;Z++)if(K(Z)){var ne=ft("option","flatpickr-monthDropdown-month");ne.value=new Date(t.currentYear,Z).getMonth().toString(),ne.textContent=Ro(Z,t.config.shorthandCurrentMonth,t.l10n),ne.tabIndex=-1,t.currentMonth===Z&&(ne.selected=!0),t.monthsDropdownContainer.appendChild(ne)}}}function q(){var K=ft("div","flatpickr-month"),Z=window.document.createDocumentFragment(),ne;t.config.showMonths>1||t.config.monthSelectorType==="static"?ne=ft("span","cur-month"):(t.monthsDropdownContainer=ft("select","flatpickr-monthDropdown-months"),t.monthsDropdownContainer.setAttribute("aria-label",t.l10n.monthAriaLabel),h(t.monthsDropdownContainer,"change",function(Pe){var Oe=Tn(Pe),Ke=parseInt(Oe.value,10);t.changeMonth(Ke-t.currentMonth),Fe("onMonthChange")}),R(),ne=t.monthsDropdownContainer);var oe=lo("cur-year",{tabindex:"-1"}),Ce=oe.getElementsByTagName("input")[0];Ce.setAttribute("aria-label",t.l10n.yearAriaLabel),t.config.minDate&&Ce.setAttribute("min",t.config.minDate.getFullYear().toString()),t.config.maxDate&&(Ce.setAttribute("max",t.config.maxDate.getFullYear().toString()),Ce.disabled=!!t.config.minDate&&t.config.minDate.getFullYear()===t.config.maxDate.getFullYear());var Ie=ft("div","flatpickr-current-month");return Ie.appendChild(ne),Ie.appendChild(oe),Z.appendChild(Ie),K.appendChild(Z),{container:K,yearElement:Ce,monthElement:ne}}function j(){so(t.monthNav),t.monthNav.appendChild(t.prevMonthNav),t.config.showMonths&&(t.yearElements=[],t.monthElements=[]);for(var K=t.config.showMonths;K--;){var Z=q();t.yearElements.push(Z.yearElement),t.monthElements.push(Z.monthElement),t.monthNav.appendChild(Z.container)}t.monthNav.appendChild(t.nextMonthNav)}function Y(){return t.monthNav=ft("div","flatpickr-months"),t.yearElements=[],t.monthElements=[],t.prevMonthNav=ft("span","flatpickr-prev-month"),t.prevMonthNav.innerHTML=t.config.prevArrow,t.nextMonthNav=ft("span","flatpickr-next-month"),t.nextMonthNav.innerHTML=t.config.nextArrow,j(),Object.defineProperty(t,"_hidePrevMonthArrow",{get:function(){return t.__hidePrevMonthArrow},set:function(K){t.__hidePrevMonthArrow!==K&&(dn(t.prevMonthNav,"flatpickr-disabled",K),t.__hidePrevMonthArrow=K)}}),Object.defineProperty(t,"_hideNextMonthArrow",{get:function(){return t.__hideNextMonthArrow},set:function(K){t.__hideNextMonthArrow!==K&&(dn(t.nextMonthNav,"flatpickr-disabled",K),t.__hideNextMonthArrow=K)}}),t.currentYearElement=t.yearElements[0],Nn(),t.monthNav}function X(){t.calendarContainer.classList.add("hasTime"),t.config.noCalendar&&t.calendarContainer.classList.add("noCalendar");var K=Nr(t.config);t.timeContainer=ft("div","flatpickr-time"),t.timeContainer.tabIndex=-1;var Z=ft("span","flatpickr-time-separator",":"),ne=lo("flatpickr-hour",{"aria-label":t.l10n.hourAriaLabel});t.hourElement=ne.getElementsByTagName("input")[0];var oe=lo("flatpickr-minute",{"aria-label":t.l10n.minuteAriaLabel});if(t.minuteElement=oe.getElementsByTagName("input")[0],t.hourElement.tabIndex=t.minuteElement.tabIndex=-1,t.hourElement.value=_n(t.latestSelectedDateObj?t.latestSelectedDateObj.getHours():t.config.time_24hr?K.hours:f(K.hours)),t.minuteElement.value=_n(t.latestSelectedDateObj?t.latestSelectedDateObj.getMinutes():K.minutes),t.hourElement.setAttribute("step",t.config.hourIncrement.toString()),t.minuteElement.setAttribute("step",t.config.minuteIncrement.toString()),t.hourElement.setAttribute("min",t.config.time_24hr?"0":"1"),t.hourElement.setAttribute("max",t.config.time_24hr?"23":"12"),t.hourElement.setAttribute("maxlength","2"),t.minuteElement.setAttribute("min","0"),t.minuteElement.setAttribute("max","59"),t.minuteElement.setAttribute("maxlength","2"),t.timeContainer.appendChild(ne),t.timeContainer.appendChild(Z),t.timeContainer.appendChild(oe),t.config.time_24hr&&t.timeContainer.classList.add("time24hr"),t.config.enableSeconds){t.timeContainer.classList.add("hasSeconds");var Ce=lo("flatpickr-second");t.secondElement=Ce.getElementsByTagName("input")[0],t.secondElement.value=_n(t.latestSelectedDateObj?t.latestSelectedDateObj.getSeconds():K.seconds),t.secondElement.setAttribute("step",t.minuteElement.getAttribute("step")),t.secondElement.setAttribute("min","0"),t.secondElement.setAttribute("max","59"),t.secondElement.setAttribute("maxlength","2"),t.timeContainer.appendChild(ft("span","flatpickr-time-separator",":")),t.timeContainer.appendChild(Ce)}return t.config.time_24hr||(t.amPM=ft("span","flatpickr-am-pm",t.l10n.amPM[jn((t.latestSelectedDateObj?t.hourElement.value:t.config.defaultHour)>11)]),t.amPM.title=t.l10n.toggleTitle,t.amPM.tabIndex=-1,t.timeContainer.appendChild(t.amPM)),t.timeContainer}function G(){t.weekdayContainer?so(t.weekdayContainer):t.weekdayContainer=ft("div","flatpickr-weekdays");for(var K=t.config.showMonths;K--;){var Z=ft("div","flatpickr-weekdaycontainer");t.weekdayContainer.appendChild(Z)}return W(),t.weekdayContainer}function W(){if(t.weekdayContainer){var K=t.l10n.firstDayOfWeek,Z=sd(t.l10n.weekdays.shorthand);K>0&&KT=!1)),$.$set(q)},i(F){if(!M){for(let R=0;RT.name===$)}function f($){return i.findIndex(T=>T===$)}function c($,T){var M;!((M=s==null?void 0:s.schema)!=null&&M.length)||$===T||!T||t(0,s.indexes=s.indexes.map(O=>B.replaceIndexColumn(O,$,T)),s)}function d($,T,M,O){M[O]=$,t(0,s)}const m=$=>o($),_=$=>c($.detail.oldName,$.detail.newName);function h($){n.$$.not_equal(s.schema,$)&&(s.schema=$,t(0,s))}const b=$=>{if(!$.detail)return;const T=$.detail.target;T.style.opacity=0,setTimeout(()=>{var M;(M=T==null?void 0:T.style)==null||M.removeProperty("opacity")},0),$.detail.dataTransfer.setDragImage(T,0,0)},y=()=>{en({})},S=$=>r($.detail);function C($){s=$,t(0,s)}return n.$$set=$=>{"collection"in $&&t(0,s=$.collection)},n.$$.update=()=>{n.$$.dirty&1&&typeof s.schema>"u"&&(t(0,s=s||new yn),t(0,s.schema=[],s)),n.$$.dirty&1&&(i=s.schema.filter($=>!$.toDelete)||[])},[s,l,o,r,f,c,d,m,_,h,b,y,S,C]}class hT extends ge{constructor(e){super(),_e(this,e,mT,pT,me,{collection:0})}}const _T=n=>({isAdminOnly:n&512}),Id=n=>({isAdminOnly:n[9]}),gT=n=>({isAdminOnly:n&512}),Ld=n=>({isAdminOnly:n[9]}),bT=n=>({isAdminOnly:n&512}),Pd=n=>({isAdminOnly:n[9]});function vT(n){let e,t;return e=new pe({props:{class:"form-field rule-field "+(n[4]?"requied":"")+" "+(n[9]?"disabled":""),name:n[3],$$slots:{default:[kT,({uniqueId:i})=>({18:i}),({uniqueId:i})=>i?262144:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&528&&(l.class="form-field rule-field "+(i[4]?"requied":"")+" "+(i[9]?"disabled":"")),s&8&&(l.name=i[3]),s&295655&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function yT(n){let e;return{c(){e=v("div"),e.innerHTML='',p(e,"class","txt-center")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function Nd(n){let e,t,i;return{c(){e=v("button"),e.innerHTML=` Set Admins only`,p(e,"type","button"),p(e,"class","btn btn-sm btn-transparent btn-hint lock-toggle svelte-1akuazq")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[11]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function Fd(n){let e,t,i,s,l;return{c(){e=v("button"),e.innerHTML=`Unlock and set custom rule -
`,p(e,"type","button"),p(e,"class","unlock-overlay svelte-1akuazq"),p(e,"aria-label","Unlock and set custom rule")},m(o,r){w(o,e,r),i=!0,s||(l=J(e,"click",n[10]),s=!0)},p:x,i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.98},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.98},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function kT(n){let e,t,i,s,l,o,r=n[9]?"- Admins only":"",a,u,f,c,d,m,_,h,b,y,S;const C=n[12].beforeLabel,$=yt(C,n,n[15],Pd),T=n[12].afterLabel,M=yt(T,n,n[15],Ld);let O=!n[9]&&Nd(n);function D(q){n[14](q)}var L=n[7];function P(q){let j={id:q[18],baseCollection:q[1],disabled:q[9],placeholder:q[9]?"":q[5]};return q[0]!==void 0&&(j.value=q[0]),{props:j}}L&&(m=Rt(L,P(n)),n[13](m),te.push(()=>de(m,"value",D)));let N=n[9]&&Fd(n);const F=n[12].default,R=yt(F,n,n[15],Id);return{c(){e=v("div"),t=v("label"),$&&$.c(),i=E(),s=v("span"),l=U(n[2]),o=E(),a=U(r),u=E(),M&&M.c(),f=E(),O&&O.c(),d=E(),m&&H(m.$$.fragment),h=E(),N&&N.c(),b=E(),y=v("div"),R&&R.c(),p(s,"class","txt"),Q(s,"txt-hint",n[9]),p(t,"for",c=n[18]),p(e,"class","input-wrapper svelte-1akuazq"),p(y,"class","help-block")},m(q,j){w(q,e,j),g(e,t),$&&$.m(t,null),g(t,i),g(t,s),g(s,l),g(s,o),g(s,a),g(t,u),M&&M.m(t,null),g(t,f),O&&O.m(t,null),g(e,d),m&&V(m,e,null),g(e,h),N&&N.m(e,null),w(q,b,j),w(q,y,j),R&&R.m(y,null),S=!0},p(q,j){$&&$.p&&(!S||j&33280)&&wt($,C,q,q[15],S?kt(C,q[15],j,bT):St(q[15]),Pd),(!S||j&4)&&se(l,q[2]),(!S||j&512)&&r!==(r=q[9]?"- Admins only":"")&&se(a,r),(!S||j&512)&&Q(s,"txt-hint",q[9]),M&&M.p&&(!S||j&33280)&&wt(M,T,q,q[15],S?kt(T,q[15],j,gT):St(q[15]),Ld),q[9]?O&&(O.d(1),O=null):O?O.p(q,j):(O=Nd(q),O.c(),O.m(t,null)),(!S||j&262144&&c!==(c=q[18]))&&p(t,"for",c);const Y={};if(j&262144&&(Y.id=q[18]),j&2&&(Y.baseCollection=q[1]),j&512&&(Y.disabled=q[9]),j&544&&(Y.placeholder=q[9]?"":q[5]),!_&&j&1&&(_=!0,Y.value=q[0],he(()=>_=!1)),j&128&&L!==(L=q[7])){if(m){ae();const X=m;I(X.$$.fragment,1,0,()=>{z(X,1)}),ue()}L?(m=Rt(L,P(q)),q[13](m),te.push(()=>de(m,"value",D)),H(m.$$.fragment),A(m.$$.fragment,1),V(m,e,h)):m=null}else L&&m.$set(Y);q[9]?N?(N.p(q,j),j&512&&A(N,1)):(N=Fd(q),N.c(),A(N,1),N.m(e,null)):N&&(ae(),I(N,1,1,()=>{N=null}),ue()),R&&R.p&&(!S||j&33280)&&wt(R,F,q,q[15],S?kt(F,q[15],j,_T):St(q[15]),Id)},i(q){S||(A($,q),A(M,q),m&&A(m.$$.fragment,q),A(N),A(R,q),S=!0)},o(q){I($,q),I(M,q),m&&I(m.$$.fragment,q),I(N),I(R,q),S=!1},d(q){q&&k(e),$&&$.d(q),M&&M.d(q),O&&O.d(),n[13](null),m&&z(m),N&&N.d(),q&&k(b),q&&k(y),R&&R.d(q)}}}function wT(n){let e,t,i,s;const l=[yT,vT],o=[];function r(a,u){return a[8]?0:1}return e=r(n),t=o[e]=l[e](n),{c(){t.c(),i=ye()},m(a,u){o[e].m(a,u),w(a,i,u),s=!0},p(a,[u]){let f=e;e=r(a),e===f?o[e].p(a,u):(ae(),I(o[f],1,1,()=>{o[f]=null}),ue(),t=o[e],t?t.p(a,u):(t=o[e]=l[e](a),t.c()),A(t,1),t.m(i.parentNode,i))},i(a){s||(A(t),s=!0)},o(a){I(t),s=!1},d(a){o[e].d(a),a&&k(i)}}}let Rd;function ST(n,e,t){let i,{$$slots:s={},$$scope:l}=e,{collection:o=null}=e,{rule:r=null}=e,{label:a="Rule"}=e,{formKey:u="rule"}=e,{required:f=!1}=e,{placeholder:c="Leave empty to grant everyone access..."}=e,d=null,m=null,_=Rd,h=!1;b();async function b(){_||h||(t(8,h=!0),t(7,_=(await at(()=>import("./FilterAutocompleteInput-7de16238.js"),["./FilterAutocompleteInput-7de16238.js","./index-fd4289fb.js"],import.meta.url)).default),Rd=_,t(8,h=!1))}async function y(){t(0,r=m||""),await fn(),d==null||d.focus()}async function S(){m=r,t(0,r=null)}function C(T){te[T?"unshift":"push"](()=>{d=T,t(6,d)})}function $(T){r=T,t(0,r)}return n.$$set=T=>{"collection"in T&&t(1,o=T.collection),"rule"in T&&t(0,r=T.rule),"label"in T&&t(2,a=T.label),"formKey"in T&&t(3,u=T.formKey),"required"in T&&t(4,f=T.required),"placeholder"in T&&t(5,c=T.placeholder),"$$scope"in T&&t(15,l=T.$$scope)},n.$$.update=()=>{n.$$.dirty&1&&t(9,i=r===null)},[r,o,a,u,f,c,d,_,h,i,y,S,s,C,$,l]}class Os extends ge{constructor(e){super(),_e(this,e,ST,wT,me,{collection:1,rule:0,label:2,formKey:3,required:4,placeholder:5})}}function qd(n,e,t){const i=n.slice();return i[11]=e[t],i}function jd(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L=n[2],P=[];for(let N=0;N@request filter:",c=E(),d=v("div"),d.innerHTML=`@request.headers.* +
`,p(e,"type","button"),p(e,"class","unlock-overlay svelte-1akuazq"),p(e,"aria-label","Unlock and set custom rule")},m(o,r){w(o,e,r),i=!0,s||(l=J(e,"click",n[10]),s=!0)},p:x,i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.98},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.98},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function kT(n){let e,t,i,s,l,o,r=n[9]?"- Admins only":"",a,u,f,c,d,m,_,h,b,y,S;const C=n[12].beforeLabel,$=yt(C,n,n[15],Pd),T=n[12].afterLabel,M=yt(T,n,n[15],Ld);let O=!n[9]&&Nd(n);function D(q){n[14](q)}var L=n[7];function P(q){let j={id:q[18],baseCollection:q[1],disabled:q[9],placeholder:q[9]?"":q[5]};return q[0]!==void 0&&(j.value=q[0]),{props:j}}L&&(m=Rt(L,P(n)),n[13](m),te.push(()=>de(m,"value",D)));let N=n[9]&&Fd(n);const F=n[12].default,R=yt(F,n,n[15],Id);return{c(){e=v("div"),t=v("label"),$&&$.c(),i=E(),s=v("span"),l=U(n[2]),o=E(),a=U(r),u=E(),M&&M.c(),f=E(),O&&O.c(),d=E(),m&&H(m.$$.fragment),h=E(),N&&N.c(),b=E(),y=v("div"),R&&R.c(),p(s,"class","txt"),Q(s,"txt-hint",n[9]),p(t,"for",c=n[18]),p(e,"class","input-wrapper svelte-1akuazq"),p(y,"class","help-block")},m(q,j){w(q,e,j),g(e,t),$&&$.m(t,null),g(t,i),g(t,s),g(s,l),g(s,o),g(s,a),g(t,u),M&&M.m(t,null),g(t,f),O&&O.m(t,null),g(e,d),m&&V(m,e,null),g(e,h),N&&N.m(e,null),w(q,b,j),w(q,y,j),R&&R.m(y,null),S=!0},p(q,j){$&&$.p&&(!S||j&33280)&&wt($,C,q,q[15],S?kt(C,q[15],j,bT):St(q[15]),Pd),(!S||j&4)&&se(l,q[2]),(!S||j&512)&&r!==(r=q[9]?"- Admins only":"")&&se(a,r),(!S||j&512)&&Q(s,"txt-hint",q[9]),M&&M.p&&(!S||j&33280)&&wt(M,T,q,q[15],S?kt(T,q[15],j,gT):St(q[15]),Ld),q[9]?O&&(O.d(1),O=null):O?O.p(q,j):(O=Nd(q),O.c(),O.m(t,null)),(!S||j&262144&&c!==(c=q[18]))&&p(t,"for",c);const Y={};if(j&262144&&(Y.id=q[18]),j&2&&(Y.baseCollection=q[1]),j&512&&(Y.disabled=q[9]),j&544&&(Y.placeholder=q[9]?"":q[5]),!_&&j&1&&(_=!0,Y.value=q[0],he(()=>_=!1)),j&128&&L!==(L=q[7])){if(m){ae();const X=m;I(X.$$.fragment,1,0,()=>{z(X,1)}),ue()}L?(m=Rt(L,P(q)),q[13](m),te.push(()=>de(m,"value",D)),H(m.$$.fragment),A(m.$$.fragment,1),V(m,e,h)):m=null}else L&&m.$set(Y);q[9]?N?(N.p(q,j),j&512&&A(N,1)):(N=Fd(q),N.c(),A(N,1),N.m(e,null)):N&&(ae(),I(N,1,1,()=>{N=null}),ue()),R&&R.p&&(!S||j&33280)&&wt(R,F,q,q[15],S?kt(F,q[15],j,_T):St(q[15]),Id)},i(q){S||(A($,q),A(M,q),m&&A(m.$$.fragment,q),A(N),A(R,q),S=!0)},o(q){I($,q),I(M,q),m&&I(m.$$.fragment,q),I(N),I(R,q),S=!1},d(q){q&&k(e),$&&$.d(q),M&&M.d(q),O&&O.d(),n[13](null),m&&z(m),N&&N.d(),q&&k(b),q&&k(y),R&&R.d(q)}}}function wT(n){let e,t,i,s;const l=[yT,vT],o=[];function r(a,u){return a[8]?0:1}return e=r(n),t=o[e]=l[e](n),{c(){t.c(),i=ye()},m(a,u){o[e].m(a,u),w(a,i,u),s=!0},p(a,[u]){let f=e;e=r(a),e===f?o[e].p(a,u):(ae(),I(o[f],1,1,()=>{o[f]=null}),ue(),t=o[e],t?t.p(a,u):(t=o[e]=l[e](a),t.c()),A(t,1),t.m(i.parentNode,i))},i(a){s||(A(t),s=!0)},o(a){I(t),s=!1},d(a){o[e].d(a),a&&k(i)}}}let Rd;function ST(n,e,t){let i,{$$slots:s={},$$scope:l}=e,{collection:o=null}=e,{rule:r=null}=e,{label:a="Rule"}=e,{formKey:u="rule"}=e,{required:f=!1}=e,{placeholder:c="Leave empty to grant everyone access..."}=e,d=null,m=null,_=Rd,h=!1;b();async function b(){_||h||(t(8,h=!0),t(7,_=(await at(()=>import("./FilterAutocompleteInput-ce40744a.js"),["./FilterAutocompleteInput-ce40744a.js","./index-fd4289fb.js"],import.meta.url)).default),Rd=_,t(8,h=!1))}async function y(){t(0,r=m||""),await fn(),d==null||d.focus()}async function S(){m=r,t(0,r=null)}function C(T){te[T?"unshift":"push"](()=>{d=T,t(6,d)})}function $(T){r=T,t(0,r)}return n.$$set=T=>{"collection"in T&&t(1,o=T.collection),"rule"in T&&t(0,r=T.rule),"label"in T&&t(2,a=T.label),"formKey"in T&&t(3,u=T.formKey),"required"in T&&t(4,f=T.required),"placeholder"in T&&t(5,c=T.placeholder),"$$scope"in T&&t(15,l=T.$$scope)},n.$$.update=()=>{n.$$.dirty&1&&t(9,i=r===null)},[r,o,a,u,f,c,d,_,h,i,y,S,s,C,$,l]}class Os extends ge{constructor(e){super(),_e(this,e,ST,wT,me,{collection:1,rule:0,label:2,formKey:3,required:4,placeholder:5})}}function qd(n,e,t){const i=n.slice();return i[11]=e[t],i}function jd(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L=n[2],P=[];for(let N=0;N@request filter:",c=E(),d=v("div"),d.innerHTML=`@request.headers.* @request.query.* @request.data.* @request.auth.*`,m=E(),_=v("hr"),h=E(),b=v("p"),b.innerHTML="You could also add constraints and query other collections using the @collection filter:",y=E(),S=v("div"),S.innerHTML="@collection.ANY_COLLECTION_NAME.*",C=E(),$=v("hr"),T=E(),M=v("p"),M.innerHTML=`Example rule: @@ -101,7 +101,7 @@ If your query doesn't have a suitable one, you can use the universal (ROW_NUMBER() OVER()) as id.
  • Expressions must be aliased with a valid formatted field name (eg. - MAX(balance) as maxBalance).
  • `,u=E(),h&&h.c(),f=ye(),p(t,"class","txt"),p(e,"for",i=n[8]),p(a,"class","help-block")},m(b,y){w(b,e,y),g(e,t),w(b,s,y),m[l].m(b,y),w(b,r,y),w(b,a,y),w(b,u,y),h&&h.m(b,y),w(b,f,y),c=!0},p(b,y){(!c||y&256&&i!==(i=b[8]))&&p(e,"for",i);let S=l;l=_(b),l===S?m[l].p(b,y):(ae(),I(m[S],1,1,()=>{m[S]=null}),ue(),o=m[l],o?o.p(b,y):(o=m[l]=d[l](b),o.c()),A(o,1),o.m(r.parentNode,r)),b[3].length?h?h.p(b,y):(h=Wd(b),h.c(),h.m(f.parentNode,f)):h&&(h.d(1),h=null)},i(b){c||(A(o),c=!0)},o(b){I(o),c=!1},d(b){b&&k(e),b&&k(s),m[l].d(b),b&&k(r),b&&k(a),b&&k(u),h&&h.d(b),b&&k(f)}}}function IT(n){let e,t;return e=new pe({props:{class:"form-field required "+(n[3].length?"error":""),name:"options.query",$$slots:{default:[AT,({uniqueId:i})=>({8:i}),({uniqueId:i})=>i?256:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&8&&(l.class="form-field required "+(i[3].length?"error":"")),s&4367&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function LT(n,e,t){let i;Je(n,Si,c=>t(4,i=c));let{collection:s=new yn}=e,l,o=!1,r=[];function a(c){var _;t(3,r=[]);const d=B.getNestedVal(c,"schema",null);if(B.isEmpty(d))return;if(d!=null&&d.message){r.push(d==null?void 0:d.message);return}const m=B.extractColumnsFromQuery((_=s==null?void 0:s.options)==null?void 0:_.query);B.removeByValue(m,"id"),B.removeByValue(m,"created"),B.removeByValue(m,"updated");for(let h in d)for(let b in d[h]){const y=d[h][b].message,S=m[h]||h;r.push(B.sentenize(S+": "+y))}}Gt(async()=>{t(2,o=!0);try{t(1,l=(await at(()=>import("./CodeEditor-95986a37.js"),["./CodeEditor-95986a37.js","./index-fd4289fb.js"],import.meta.url)).default)}catch(c){console.warn(c)}t(2,o=!1)});function u(c){n.$$.not_equal(s.options.query,c)&&(s.options.query=c,t(0,s))}const f=()=>{r.length&&ai("schema")};return n.$$set=c=>{"collection"in c&&t(0,s=c.collection)},n.$$.update=()=>{n.$$.dirty&16&&a(i)},[s,l,o,r,i,u,f]}class PT extends ge{constructor(e){super(),_e(this,e,LT,IT,me,{collection:0})}}const NT=n=>({active:n&1}),Kd=n=>({active:n[0]});function Jd(n){let e,t,i;const s=n[15].default,l=yt(s,n,n[14],null);return{c(){e=v("div"),l&&l.c(),p(e,"class","accordion-content")},m(o,r){w(o,e,r),l&&l.m(e,null),i=!0},p(o,r){l&&l.p&&(!i||r&16384)&&wt(l,s,o,o[14],i?kt(s,o[14],r,null):St(o[14]),null)},i(o){i||(A(l,o),o&&Qe(()=>{i&&(t||(t=je(e,ot,{duration:150},!0)),t.run(1))}),i=!0)},o(o){I(l,o),o&&(t||(t=je(e,ot,{duration:150},!1)),t.run(0)),i=!1},d(o){o&&k(e),l&&l.d(o),o&&t&&t.end()}}}function FT(n){let e,t,i,s,l,o,r;const a=n[15].header,u=yt(a,n,n[14],Kd);let f=n[0]&&Jd(n);return{c(){e=v("div"),t=v("button"),u&&u.c(),i=E(),f&&f.c(),p(t,"type","button"),p(t,"class","accordion-header"),p(t,"draggable",n[2]),Q(t,"interactive",n[3]),p(e,"class",s="accordion "+(n[7]?"drag-over":"")+" "+n[1]),Q(e,"active",n[0])},m(c,d){w(c,e,d),g(e,t),u&&u.m(t,null),g(e,i),f&&f.m(e,null),n[22](e),l=!0,o||(r=[J(t,"click",et(n[17])),J(t,"drop",et(n[18])),J(t,"dragstart",n[19]),J(t,"dragenter",n[20]),J(t,"dragleave",n[21]),J(t,"dragover",et(n[16]))],o=!0)},p(c,[d]){u&&u.p&&(!l||d&16385)&&wt(u,a,c,c[14],l?kt(a,c[14],d,NT):St(c[14]),Kd),(!l||d&4)&&p(t,"draggable",c[2]),(!l||d&8)&&Q(t,"interactive",c[3]),c[0]?f?(f.p(c,d),d&1&&A(f,1)):(f=Jd(c),f.c(),A(f,1),f.m(e,null)):f&&(ae(),I(f,1,1,()=>{f=null}),ue()),(!l||d&130&&s!==(s="accordion "+(c[7]?"drag-over":"")+" "+c[1]))&&p(e,"class",s),(!l||d&131)&&Q(e,"active",c[0])},i(c){l||(A(u,c),A(f),l=!0)},o(c){I(u,c),I(f),l=!1},d(c){c&&k(e),u&&u.d(c),f&&f.d(),n[22](null),o=!1,Ee(r)}}}function RT(n,e,t){let{$$slots:i={},$$scope:s}=e;const l=$t();let o,r,{class:a=""}=e,{draggable:u=!1}=e,{active:f=!1}=e,{interactive:c=!0}=e,{single:d=!1}=e,m=!1;function _(){return!!f}function h(){S(),t(0,f=!0),l("expand")}function b(){t(0,f=!1),clearTimeout(r),l("collapse")}function y(){l("toggle"),f?b():h()}function S(){if(d&&o.closest(".accordions")){const P=o.closest(".accordions").querySelectorAll(".accordion.active .accordion-header.interactive");for(const N of P)N.click()}}Gt(()=>()=>clearTimeout(r));function C(P){Ne.call(this,n,P)}const $=()=>c&&y(),T=P=>{u&&(t(7,m=!1),S(),l("drop",P))},M=P=>u&&l("dragstart",P),O=P=>{u&&(t(7,m=!0),l("dragenter",P))},D=P=>{u&&(t(7,m=!1),l("dragleave",P))};function L(P){te[P?"unshift":"push"](()=>{o=P,t(6,o)})}return n.$$set=P=>{"class"in P&&t(1,a=P.class),"draggable"in P&&t(2,u=P.draggable),"active"in P&&t(0,f=P.active),"interactive"in P&&t(3,c=P.interactive),"single"in P&&t(9,d=P.single),"$$scope"in P&&t(14,s=P.$$scope)},n.$$.update=()=>{n.$$.dirty&8257&&f&&(clearTimeout(r),t(13,r=setTimeout(()=>{o!=null&&o.scrollIntoViewIfNeeded?o.scrollIntoViewIfNeeded():o!=null&&o.scrollIntoView&&o.scrollIntoView({behavior:"smooth",block:"nearest"})},200)))},[f,a,u,c,y,S,o,m,l,d,_,h,b,r,s,i,C,$,T,M,O,D,L]}class po extends ge{constructor(e){super(),_e(this,e,RT,FT,me,{class:1,draggable:2,active:0,interactive:3,single:9,isExpanded:10,expand:11,collapse:12,toggle:4,collapseSiblings:5})}get isExpanded(){return this.$$.ctx[10]}get expand(){return this.$$.ctx[11]}get collapse(){return this.$$.ctx[12]}get toggle(){return this.$$.ctx[4]}get collapseSiblings(){return this.$$.ctx[5]}}function qT(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Enable"),p(e,"type","checkbox"),p(e,"id",t=n[12]),p(s,"for",o=n[12])},m(u,f){w(u,e,f),e.checked=n[0].options.allowUsernameAuth,w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[5]),r=!0)},p(u,f){f&4096&&t!==(t=u[12])&&p(e,"id",t),f&1&&(e.checked=u[0].options.allowUsernameAuth),f&4096&&o!==(o=u[12])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function jT(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle m-b-0",name:"options.allowUsernameAuth",$$slots:{default:[qT,({uniqueId:i})=>({12:i}),({uniqueId:i})=>i?4096:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&12289&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function VT(n){let e;return{c(){e=v("span"),e.textContent="Disabled",p(e,"class","label")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function zT(n){let e;return{c(){e=v("span"),e.textContent="Enabled",p(e,"class","label label-success")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Zd(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,{text:"Has errors",position:"left"})),s=!0)},i(o){i||(Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function HT(n){let e,t,i,s,l,o,r;function a(d,m){return d[0].options.allowUsernameAuth?zT:VT}let u=a(n),f=u(n),c=n[3]&&Zd();return{c(){e=v("div"),e.innerHTML=` + MAX(balance) as maxBalance).`,u=E(),h&&h.c(),f=ye(),p(t,"class","txt"),p(e,"for",i=n[8]),p(a,"class","help-block")},m(b,y){w(b,e,y),g(e,t),w(b,s,y),m[l].m(b,y),w(b,r,y),w(b,a,y),w(b,u,y),h&&h.m(b,y),w(b,f,y),c=!0},p(b,y){(!c||y&256&&i!==(i=b[8]))&&p(e,"for",i);let S=l;l=_(b),l===S?m[l].p(b,y):(ae(),I(m[S],1,1,()=>{m[S]=null}),ue(),o=m[l],o?o.p(b,y):(o=m[l]=d[l](b),o.c()),A(o,1),o.m(r.parentNode,r)),b[3].length?h?h.p(b,y):(h=Wd(b),h.c(),h.m(f.parentNode,f)):h&&(h.d(1),h=null)},i(b){c||(A(o),c=!0)},o(b){I(o),c=!1},d(b){b&&k(e),b&&k(s),m[l].d(b),b&&k(r),b&&k(a),b&&k(u),h&&h.d(b),b&&k(f)}}}function IT(n){let e,t;return e=new pe({props:{class:"form-field required "+(n[3].length?"error":""),name:"options.query",$$slots:{default:[AT,({uniqueId:i})=>({8:i}),({uniqueId:i})=>i?256:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&8&&(l.class="form-field required "+(i[3].length?"error":"")),s&4367&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function LT(n,e,t){let i;Je(n,Si,c=>t(4,i=c));let{collection:s=new yn}=e,l,o=!1,r=[];function a(c){var _;t(3,r=[]);const d=B.getNestedVal(c,"schema",null);if(B.isEmpty(d))return;if(d!=null&&d.message){r.push(d==null?void 0:d.message);return}const m=B.extractColumnsFromQuery((_=s==null?void 0:s.options)==null?void 0:_.query);B.removeByValue(m,"id"),B.removeByValue(m,"created"),B.removeByValue(m,"updated");for(let h in d)for(let b in d[h]){const y=d[h][b].message,S=m[h]||h;r.push(B.sentenize(S+": "+y))}}Gt(async()=>{t(2,o=!0);try{t(1,l=(await at(()=>import("./CodeEditor-ea0b96ae.js"),["./CodeEditor-ea0b96ae.js","./index-fd4289fb.js"],import.meta.url)).default)}catch(c){console.warn(c)}t(2,o=!1)});function u(c){n.$$.not_equal(s.options.query,c)&&(s.options.query=c,t(0,s))}const f=()=>{r.length&&ai("schema")};return n.$$set=c=>{"collection"in c&&t(0,s=c.collection)},n.$$.update=()=>{n.$$.dirty&16&&a(i)},[s,l,o,r,i,u,f]}class PT extends ge{constructor(e){super(),_e(this,e,LT,IT,me,{collection:0})}}const NT=n=>({active:n&1}),Kd=n=>({active:n[0]});function Jd(n){let e,t,i;const s=n[15].default,l=yt(s,n,n[14],null);return{c(){e=v("div"),l&&l.c(),p(e,"class","accordion-content")},m(o,r){w(o,e,r),l&&l.m(e,null),i=!0},p(o,r){l&&l.p&&(!i||r&16384)&&wt(l,s,o,o[14],i?kt(s,o[14],r,null):St(o[14]),null)},i(o){i||(A(l,o),o&&Qe(()=>{i&&(t||(t=je(e,ot,{duration:150},!0)),t.run(1))}),i=!0)},o(o){I(l,o),o&&(t||(t=je(e,ot,{duration:150},!1)),t.run(0)),i=!1},d(o){o&&k(e),l&&l.d(o),o&&t&&t.end()}}}function FT(n){let e,t,i,s,l,o,r;const a=n[15].header,u=yt(a,n,n[14],Kd);let f=n[0]&&Jd(n);return{c(){e=v("div"),t=v("button"),u&&u.c(),i=E(),f&&f.c(),p(t,"type","button"),p(t,"class","accordion-header"),p(t,"draggable",n[2]),Q(t,"interactive",n[3]),p(e,"class",s="accordion "+(n[7]?"drag-over":"")+" "+n[1]),Q(e,"active",n[0])},m(c,d){w(c,e,d),g(e,t),u&&u.m(t,null),g(e,i),f&&f.m(e,null),n[22](e),l=!0,o||(r=[J(t,"click",et(n[17])),J(t,"drop",et(n[18])),J(t,"dragstart",n[19]),J(t,"dragenter",n[20]),J(t,"dragleave",n[21]),J(t,"dragover",et(n[16]))],o=!0)},p(c,[d]){u&&u.p&&(!l||d&16385)&&wt(u,a,c,c[14],l?kt(a,c[14],d,NT):St(c[14]),Kd),(!l||d&4)&&p(t,"draggable",c[2]),(!l||d&8)&&Q(t,"interactive",c[3]),c[0]?f?(f.p(c,d),d&1&&A(f,1)):(f=Jd(c),f.c(),A(f,1),f.m(e,null)):f&&(ae(),I(f,1,1,()=>{f=null}),ue()),(!l||d&130&&s!==(s="accordion "+(c[7]?"drag-over":"")+" "+c[1]))&&p(e,"class",s),(!l||d&131)&&Q(e,"active",c[0])},i(c){l||(A(u,c),A(f),l=!0)},o(c){I(u,c),I(f),l=!1},d(c){c&&k(e),u&&u.d(c),f&&f.d(),n[22](null),o=!1,Ee(r)}}}function RT(n,e,t){let{$$slots:i={},$$scope:s}=e;const l=$t();let o,r,{class:a=""}=e,{draggable:u=!1}=e,{active:f=!1}=e,{interactive:c=!0}=e,{single:d=!1}=e,m=!1;function _(){return!!f}function h(){S(),t(0,f=!0),l("expand")}function b(){t(0,f=!1),clearTimeout(r),l("collapse")}function y(){l("toggle"),f?b():h()}function S(){if(d&&o.closest(".accordions")){const P=o.closest(".accordions").querySelectorAll(".accordion.active .accordion-header.interactive");for(const N of P)N.click()}}Gt(()=>()=>clearTimeout(r));function C(P){Ne.call(this,n,P)}const $=()=>c&&y(),T=P=>{u&&(t(7,m=!1),S(),l("drop",P))},M=P=>u&&l("dragstart",P),O=P=>{u&&(t(7,m=!0),l("dragenter",P))},D=P=>{u&&(t(7,m=!1),l("dragleave",P))};function L(P){te[P?"unshift":"push"](()=>{o=P,t(6,o)})}return n.$$set=P=>{"class"in P&&t(1,a=P.class),"draggable"in P&&t(2,u=P.draggable),"active"in P&&t(0,f=P.active),"interactive"in P&&t(3,c=P.interactive),"single"in P&&t(9,d=P.single),"$$scope"in P&&t(14,s=P.$$scope)},n.$$.update=()=>{n.$$.dirty&8257&&f&&(clearTimeout(r),t(13,r=setTimeout(()=>{o!=null&&o.scrollIntoViewIfNeeded?o.scrollIntoViewIfNeeded():o!=null&&o.scrollIntoView&&o.scrollIntoView({behavior:"smooth",block:"nearest"})},200)))},[f,a,u,c,y,S,o,m,l,d,_,h,b,r,s,i,C,$,T,M,O,D,L]}class po extends ge{constructor(e){super(),_e(this,e,RT,FT,me,{class:1,draggable:2,active:0,interactive:3,single:9,isExpanded:10,expand:11,collapse:12,toggle:4,collapseSiblings:5})}get isExpanded(){return this.$$.ctx[10]}get expand(){return this.$$.ctx[11]}get collapse(){return this.$$.ctx[12]}get toggle(){return this.$$.ctx[4]}get collapseSiblings(){return this.$$.ctx[5]}}function qT(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Enable"),p(e,"type","checkbox"),p(e,"id",t=n[12]),p(s,"for",o=n[12])},m(u,f){w(u,e,f),e.checked=n[0].options.allowUsernameAuth,w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[5]),r=!0)},p(u,f){f&4096&&t!==(t=u[12])&&p(e,"id",t),f&1&&(e.checked=u[0].options.allowUsernameAuth),f&4096&&o!==(o=u[12])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function jT(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle m-b-0",name:"options.allowUsernameAuth",$$slots:{default:[qT,({uniqueId:i})=>({12:i}),({uniqueId:i})=>i?4096:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&12289&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function VT(n){let e;return{c(){e=v("span"),e.textContent="Disabled",p(e,"class","label")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function zT(n){let e;return{c(){e=v("span"),e.textContent="Enabled",p(e,"class","label label-success")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Zd(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,{text:"Has errors",position:"left"})),s=!0)},i(o){i||(Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function HT(n){let e,t,i,s,l,o,r;function a(d,m){return d[0].options.allowUsernameAuth?zT:VT}let u=a(n),f=u(n),c=n[3]&&Zd();return{c(){e=v("div"),e.innerHTML=` Username/Password`,t=E(),i=v("div"),s=E(),f.c(),l=E(),c&&c.c(),o=ye(),p(e,"class","inline-flex"),p(i,"class","flex-fill")},m(d,m){w(d,e,m),w(d,t,m),w(d,i,m),w(d,s,m),f.m(d,m),w(d,l,m),c&&c.m(d,m),w(d,o,m),r=!0},p(d,m){u!==(u=a(d))&&(f.d(1),f=u(d),f&&(f.c(),f.m(l.parentNode,l))),d[3]?c?m&8&&A(c,1):(c=Zd(),c.c(),A(c,1),c.m(o.parentNode,o)):c&&(ae(),I(c,1,1,()=>{c=null}),ue())},i(d){r||(A(c),r=!0)},o(d){I(c),r=!1},d(d){d&&k(e),d&&k(t),d&&k(i),d&&k(s),f.d(d),d&&k(l),c&&c.d(d),d&&k(o)}}}function BT(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Enable"),p(e,"type","checkbox"),p(e,"id",t=n[12]),p(s,"for",o=n[12])},m(u,f){w(u,e,f),e.checked=n[0].options.allowEmailAuth,w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[6]),r=!0)},p(u,f){f&4096&&t!==(t=u[12])&&p(e,"id",t),f&1&&(e.checked=u[0].options.allowEmailAuth),f&4096&&o!==(o=u[12])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Gd(n){let e,t,i,s,l,o,r,a;return i=new pe({props:{class:"form-field "+(B.isEmpty(n[0].options.onlyEmailDomains)?"":"disabled"),name:"options.exceptEmailDomains",$$slots:{default:[UT,({uniqueId:u})=>({12:u}),({uniqueId:u})=>u?4096:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field "+(B.isEmpty(n[0].options.exceptEmailDomains)?"":"disabled"),name:"options.onlyEmailDomains",$$slots:{default:[WT,({uniqueId:u})=>({12:u}),({uniqueId:u})=>u?4096:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),p(t,"class","col-lg-6"),p(l,"class","col-lg-6"),p(e,"class","grid grid-sm p-t-sm")},m(u,f){w(u,e,f),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),a=!0},p(u,f){const c={};f&1&&(c.class="form-field "+(B.isEmpty(u[0].options.onlyEmailDomains)?"":"disabled")),f&12289&&(c.$$scope={dirty:f,ctx:u}),i.$set(c);const d={};f&1&&(d.class="form-field "+(B.isEmpty(u[0].options.exceptEmailDomains)?"":"disabled")),f&12289&&(d.$$scope={dirty:f,ctx:u}),o.$set(d)},i(u){a||(A(i.$$.fragment,u),A(o.$$.fragment,u),u&&Qe(()=>{a&&(r||(r=je(e,ot,{duration:150},!0)),r.run(1))}),a=!0)},o(u){I(i.$$.fragment,u),I(o.$$.fragment,u),u&&(r||(r=je(e,ot,{duration:150},!1)),r.run(0)),a=!1},d(u){u&&k(e),z(i),z(o),u&&r&&r.end()}}}function UT(n){let e,t,i,s,l,o,r,a,u,f,c,d,m;function _(b){n[7](b)}let h={id:n[12],disabled:!B.isEmpty(n[0].options.onlyEmailDomains)};return n[0].options.exceptEmailDomains!==void 0&&(h.value=n[0].options.exceptEmailDomains),r=new Vs({props:h}),te.push(()=>de(r,"value",_)),{c(){e=v("label"),t=v("span"),t.textContent="Except domains",i=E(),s=v("i"),o=E(),H(r.$$.fragment),u=E(),f=v("div"),f.textContent="Use comma as separator.",p(t,"class","txt"),p(s,"class","ri-information-line link-hint"),p(e,"for",l=n[12]),p(f,"class","help-block")},m(b,y){w(b,e,y),g(e,t),g(e,i),g(e,s),w(b,o,y),V(r,b,y),w(b,u,y),w(b,f,y),c=!0,d||(m=Me(He.call(null,s,{text:`Email domains that are NOT allowed to sign up. This field is disabled if "Only domains" is set.`,position:"top"})),d=!0)},p(b,y){(!c||y&4096&&l!==(l=b[12]))&&p(e,"for",l);const S={};y&4096&&(S.id=b[12]),y&1&&(S.disabled=!B.isEmpty(b[0].options.onlyEmailDomains)),!a&&y&1&&(a=!0,S.value=b[0].options.exceptEmailDomains,he(()=>a=!1)),r.$set(S)},i(b){c||(A(r.$$.fragment,b),c=!0)},o(b){I(r.$$.fragment,b),c=!1},d(b){b&&k(e),b&&k(o),z(r,b),b&&k(u),b&&k(f),d=!1,m()}}}function WT(n){let e,t,i,s,l,o,r,a,u,f,c,d,m;function _(b){n[8](b)}let h={id:n[12],disabled:!B.isEmpty(n[0].options.exceptEmailDomains)};return n[0].options.onlyEmailDomains!==void 0&&(h.value=n[0].options.onlyEmailDomains),r=new Vs({props:h}),te.push(()=>de(r,"value",_)),{c(){e=v("label"),t=v("span"),t.textContent="Only domains",i=E(),s=v("i"),o=E(),H(r.$$.fragment),u=E(),f=v("div"),f.textContent="Use comma as separator.",p(t,"class","txt"),p(s,"class","ri-information-line link-hint"),p(e,"for",l=n[12]),p(f,"class","help-block")},m(b,y){w(b,e,y),g(e,t),g(e,i),g(e,s),w(b,o,y),V(r,b,y),w(b,u,y),w(b,f,y),c=!0,d||(m=Me(He.call(null,s,{text:`Email domains that are ONLY allowed to sign up. This field is disabled if "Except domains" is set.`,position:"top"})),d=!0)},p(b,y){(!c||y&4096&&l!==(l=b[12]))&&p(e,"for",l);const S={};y&4096&&(S.id=b[12]),y&1&&(S.disabled=!B.isEmpty(b[0].options.exceptEmailDomains)),!a&&y&1&&(a=!0,S.value=b[0].options.onlyEmailDomains,he(()=>a=!1)),r.$set(S)},i(b){c||(A(r.$$.fragment,b),c=!0)},o(b){I(r.$$.fragment,b),c=!1},d(b){b&&k(e),b&&k(o),z(r,b),b&&k(u),b&&k(f),d=!1,m()}}}function YT(n){let e,t,i,s;e=new pe({props:{class:"form-field form-field-toggle m-0",name:"options.allowEmailAuth",$$slots:{default:[BT,({uniqueId:o})=>({12:o}),({uniqueId:o})=>o?4096:0]},$$scope:{ctx:n}}});let l=n[0].options.allowEmailAuth&&Gd(n);return{c(){H(e.$$.fragment),t=E(),l&&l.c(),i=ye()},m(o,r){V(e,o,r),w(o,t,r),l&&l.m(o,r),w(o,i,r),s=!0},p(o,r){const a={};r&12289&&(a.$$scope={dirty:r,ctx:o}),e.$set(a),o[0].options.allowEmailAuth?l?(l.p(o,r),r&1&&A(l,1)):(l=Gd(o),l.c(),A(l,1),l.m(i.parentNode,i)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){s||(A(e.$$.fragment,o),A(l),s=!0)},o(o){I(e.$$.fragment,o),I(l),s=!1},d(o){z(e,o),o&&k(t),l&&l.d(o),o&&k(i)}}}function KT(n){let e;return{c(){e=v("span"),e.textContent="Disabled",p(e,"class","label")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function JT(n){let e;return{c(){e=v("span"),e.textContent="Enabled",p(e,"class","label label-success")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Xd(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,{text:"Has errors",position:"left"})),s=!0)},i(o){i||(Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function ZT(n){let e,t,i,s,l,o,r;function a(d,m){return d[0].options.allowEmailAuth?JT:KT}let u=a(n),f=u(n),c=n[2]&&Xd();return{c(){e=v("div"),e.innerHTML=` @@ -114,7 +114,7 @@ Also note that some OAuth2 providers (like Twitter), don't return an email and t you'll have to update it manually!`,o=E(),u&&u.c(),r=E(),f&&f.c(),a=ye(),p(t,"class","icon"),p(s,"class","content txt-bold"),p(e,"class","alert alert-warning")},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),g(s,l),g(s,o),u&&u.m(s,null),w(c,r,d),f&&f.m(c,d),w(c,a,d)},p(c,d){c[6].length?u||(u=ip(),u.c(),u.m(s,null)):u&&(u.d(1),u=null),c[8]?f?f.p(c,d):(f=sp(c),f.c(),f.m(a.parentNode,a)):f&&(f.d(1),f=null)},d(c){c&&k(e),u&&u.d(),c&&k(r),f&&f.d(c),c&&k(a)}}}function rM(n){let e;return{c(){e=v("h4"),e.textContent="Confirm collection changes"},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function aM(n){let e,t,i,s,l;return{c(){e=v("button"),e.innerHTML='Cancel',t=E(),i=v("button"),i.innerHTML='Confirm',e.autofocus=!0,p(e,"type","button"),p(e,"class","btn btn-transparent"),p(i,"type","button"),p(i,"class","btn btn-expanded")},m(o,r){w(o,e,r),w(o,t,r),w(o,i,r),e.focus(),s||(l=[J(e,"click",n[11]),J(i,"click",n[12])],s=!0)},p:x,d(o){o&&k(e),o&&k(t),o&&k(i),s=!1,Ee(l)}}}function uM(n){let e,t,i={class:"confirm-changes-panel",popup:!0,$$slots:{footer:[aM],header:[rM],default:[oM]},$$scope:{ctx:n}};return e=new ln({props:i}),n[13](e),e.$on("hide",n[14]),e.$on("show",n[15]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&16777710&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[13](null),z(e,s)}}}function fM(n,e,t){let i,s,l,o,r;const a=$t();let u,f,c;async function d($,T){t(1,f=$),t(2,c=T),await fn(),i||s.length||l.length||o.length?u==null||u.show():_()}function m(){u==null||u.hide()}function _(){m(),a("confirm")}const h=()=>m(),b=()=>_();function y($){te[$?"unshift":"push"](()=>{u=$,t(4,u)})}function S($){Ne.call(this,n,$)}function C($){Ne.call(this,n,$)}return n.$$.update=()=>{var $,T,M;n.$$.dirty&6&&t(3,i=(f==null?void 0:f.name)!=(c==null?void 0:c.name)),n.$$.dirty&4&&t(7,s=(($=c==null?void 0:c.schema)==null?void 0:$.filter(O=>O.id&&!O.toDelete&&O.originalName!=O.name))||[]),n.$$.dirty&4&&t(6,l=((T=c==null?void 0:c.schema)==null?void 0:T.filter(O=>O.id&&O.toDelete))||[]),n.$$.dirty&6&&t(5,o=((M=c==null?void 0:c.schema)==null?void 0:M.filter(O=>{var L,P,N;const D=(L=f==null?void 0:f.schema)==null?void 0:L.find(F=>F.id==O.id);return D?((P=D.options)==null?void 0:P.maxSelect)!=1&&((N=O.options)==null?void 0:N.maxSelect)==1:!1}))||[]),n.$$.dirty&12&&t(8,r=!(c!=null&&c.$isView)||i)},[m,f,c,i,u,o,l,s,r,_,d,h,b,y,S,C]}class cM extends ge{constructor(e){super(),_e(this,e,fM,uM,me,{show:10,hide:0})}get show(){return this.$$.ctx[10]}get hide(){return this.$$.ctx[0]}}function fp(n,e,t){const i=n.slice();return i[47]=e[t][0],i[48]=e[t][1],i}function dM(n){let e,t,i;function s(o){n[33](o)}let l={};return n[2]!==void 0&&(l.collection=n[2]),e=new hT({props:l}),te.push(()=>de(e,"collection",s)),{c(){H(e.$$.fragment)},m(o,r){V(e,o,r),i=!0},p(o,r){const a={};!t&&r[0]&4&&(t=!0,a.collection=o[2],he(()=>t=!1)),e.$set(a)},i(o){i||(A(e.$$.fragment,o),i=!0)},o(o){I(e.$$.fragment,o),i=!1},d(o){z(e,o)}}}function pM(n){let e,t,i;function s(o){n[32](o)}let l={};return n[2]!==void 0&&(l.collection=n[2]),e=new PT({props:l}),te.push(()=>de(e,"collection",s)),{c(){H(e.$$.fragment)},m(o,r){V(e,o,r),i=!0},p(o,r){const a={};!t&&r[0]&4&&(t=!0,a.collection=o[2],he(()=>t=!1)),e.$set(a)},i(o){i||(A(e.$$.fragment,o),i=!0)},o(o){I(e.$$.fragment,o),i=!1},d(o){z(e,o)}}}function cp(n){let e,t,i,s;function l(r){n[34](r)}let o={};return n[2]!==void 0&&(o.collection=n[2]),t=new OT({props:o}),te.push(()=>de(t,"collection",l)),{c(){e=v("div"),H(t.$$.fragment),p(e,"class","tab-item active")},m(r,a){w(r,e,a),V(t,e,null),s=!0},p(r,a){const u={};!i&&a[0]&4&&(i=!0,u.collection=r[2],he(()=>i=!1)),t.$set(u)},i(r){s||(A(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&k(e),z(t)}}}function dp(n){let e,t,i,s;function l(r){n[35](r)}let o={};return n[2]!==void 0&&(o.collection=n[2]),t=new lM({props:o}),te.push(()=>de(t,"collection",l)),{c(){e=v("div"),H(t.$$.fragment),p(e,"class","tab-item"),Q(e,"active",n[3]===Ns)},m(r,a){w(r,e,a),V(t,e,null),s=!0},p(r,a){const u={};!i&&a[0]&4&&(i=!0,u.collection=r[2],he(()=>i=!1)),t.$set(u),(!s||a[0]&8)&&Q(e,"active",r[3]===Ns)},i(r){s||(A(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&k(e),z(t)}}}function mM(n){let e,t,i,s,l,o,r;const a=[pM,dM],u=[];function f(m,_){return m[2].$isView?0:1}i=f(n),s=u[i]=a[i](n);let c=n[3]===kl&&cp(n),d=n[2].$isAuth&&dp(n);return{c(){e=v("div"),t=v("div"),s.c(),l=E(),c&&c.c(),o=E(),d&&d.c(),p(t,"class","tab-item"),Q(t,"active",n[3]===Pi),p(e,"class","tabs-content svelte-12y0yzb")},m(m,_){w(m,e,_),g(e,t),u[i].m(t,null),g(e,l),c&&c.m(e,null),g(e,o),d&&d.m(e,null),r=!0},p(m,_){let h=i;i=f(m),i===h?u[i].p(m,_):(ae(),I(u[h],1,1,()=>{u[h]=null}),ue(),s=u[i],s?s.p(m,_):(s=u[i]=a[i](m),s.c()),A(s,1),s.m(t,null)),(!r||_[0]&8)&&Q(t,"active",m[3]===Pi),m[3]===kl?c?(c.p(m,_),_[0]&8&&A(c,1)):(c=cp(m),c.c(),A(c,1),c.m(e,o)):c&&(ae(),I(c,1,1,()=>{c=null}),ue()),m[2].$isAuth?d?(d.p(m,_),_[0]&4&&A(d,1)):(d=dp(m),d.c(),A(d,1),d.m(e,null)):d&&(ae(),I(d,1,1,()=>{d=null}),ue())},i(m){r||(A(s),A(c),A(d),r=!0)},o(m){I(s),I(c),I(d),r=!1},d(m){m&&k(e),u[i].d(),c&&c.d(),d&&d.d()}}}function pp(n){let e,t,i,s,l,o,r;return o=new Kn({props:{class:"dropdown dropdown-right m-t-5",$$slots:{default:[hM]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=E(),i=v("button"),s=v("i"),l=E(),H(o.$$.fragment),p(e,"class","flex-fill"),p(s,"class","ri-more-line"),p(i,"type","button"),p(i,"aria-label","More"),p(i,"class","btn btn-sm btn-circle btn-transparent flex-gap-0")},m(a,u){w(a,e,u),w(a,t,u),w(a,i,u),g(i,s),g(i,l),V(o,i,null),r=!0},p(a,u){const f={};u[1]&1048576&&(f.$$scope={dirty:u,ctx:a}),o.$set(f)},i(a){r||(A(o.$$.fragment,a),r=!0)},o(a){I(o.$$.fragment,a),r=!1},d(a){a&&k(e),a&&k(t),a&&k(i),z(o)}}}function hM(n){let e,t,i,s,l;return{c(){e=v("button"),e.innerHTML=` Duplicate`,t=E(),i=v("button"),i.innerHTML=` Delete`,p(e,"type","button"),p(e,"class","dropdown-item closable"),p(i,"type","button"),p(i,"class","dropdown-item txt-danger closable")},m(o,r){w(o,e,r),w(o,t,r),w(o,i,r),s||(l=[J(e,"click",n[24]),J(i,"click",An(et(n[25])))],s=!0)},p:x,d(o){o&&k(e),o&&k(t),o&&k(i),s=!1,Ee(l)}}}function mp(n){let e,t,i,s;return i=new Kn({props:{class:"dropdown dropdown-right dropdown-nowrap m-t-5",$$slots:{default:[_M]},$$scope:{ctx:n}}}),{c(){e=v("i"),t=E(),H(i.$$.fragment),p(e,"class","ri-arrow-down-s-fill")},m(l,o){w(l,e,o),w(l,t,o),V(i,l,o),s=!0},p(l,o){const r={};o[0]&68|o[1]&1048576&&(r.$$scope={dirty:o,ctx:l}),i.$set(r)},i(l){s||(A(i.$$.fragment,l),s=!0)},o(l){I(i.$$.fragment,l),s=!1},d(l){l&&k(e),l&&k(t),z(i,l)}}}function hp(n){let e,t,i,s,l,o=n[48]+"",r,a,u,f,c;function d(){return n[27](n[47])}return{c(){e=v("button"),t=v("i"),s=E(),l=v("span"),r=U(o),a=U(" collection"),u=E(),p(t,"class",i=ls(B.getCollectionTypeIcon(n[47]))+" svelte-12y0yzb"),p(l,"class","txt"),p(e,"type","button"),p(e,"class","dropdown-item closable"),Q(e,"selected",n[47]==n[2].type)},m(m,_){w(m,e,_),g(e,t),g(e,s),g(e,l),g(l,r),g(l,a),g(e,u),f||(c=J(e,"click",d),f=!0)},p(m,_){n=m,_[0]&64&&i!==(i=ls(B.getCollectionTypeIcon(n[47]))+" svelte-12y0yzb")&&p(t,"class",i),_[0]&64&&o!==(o=n[48]+"")&&se(r,o),_[0]&68&&Q(e,"selected",n[47]==n[2].type)},d(m){m&&k(e),f=!1,c()}}}function _M(n){let e,t=Object.entries(n[6]),i=[];for(let s=0;s{N=null}),ue()),(!D||q[0]&4&&$!==($="btn btn-sm p-r-10 p-l-10 "+(R[2].$isNew?"btn-outline":"btn-transparent")))&&p(d,"class",$),(!D||q[0]&4&&T!==(T=!R[2].$isNew))&&(d.disabled=T),R[2].system?F||(F=_p(),F.c(),F.m(O.parentNode,O)):F&&(F.d(1),F=null)},i(R){D||(A(N),D=!0)},o(R){I(N),D=!1},d(R){R&&k(e),R&&k(s),R&&k(l),R&&k(f),R&&k(c),N&&N.d(),R&&k(M),F&&F.d(R),R&&k(O),L=!1,P()}}}function gp(n){let e,t,i,s,l,o;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(r,a){w(r,e,a),s=!0,l||(o=Me(t=He.call(null,e,n[11])),l=!0)},p(r,a){t&&jt(t.update)&&a[0]&2048&&t.update.call(null,r[11])},i(r){s||(r&&Qe(()=>{s&&(i||(i=je(e,Kt,{duration:150,start:.7},!0)),i.run(1))}),s=!0)},o(r){r&&(i||(i=je(e,Kt,{duration:150,start:.7},!1)),i.run(0)),s=!1},d(r){r&&k(e),r&&i&&i.end(),l=!1,o()}}}function bp(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,"Has errors")),s=!0)},i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function vp(n){var a,u,f;let e,t,i,s=!B.isEmpty((a=n[5])==null?void 0:a.options)&&!((f=(u=n[5])==null?void 0:u.options)!=null&&f.manageRule),l,o,r=s&&yp();return{c(){e=v("button"),t=v("span"),t.textContent="Options",i=E(),r&&r.c(),p(t,"class","txt"),p(e,"type","button"),p(e,"class","tab-item"),Q(e,"active",n[3]===Ns)},m(c,d){w(c,e,d),g(e,t),g(e,i),r&&r.m(e,null),l||(o=J(e,"click",n[31]),l=!0)},p(c,d){var m,_,h;d[0]&32&&(s=!B.isEmpty((m=c[5])==null?void 0:m.options)&&!((h=(_=c[5])==null?void 0:_.options)!=null&&h.manageRule)),s?r?d[0]&32&&A(r,1):(r=yp(),r.c(),A(r,1),r.m(e,null)):r&&(ae(),I(r,1,1,()=>{r=null}),ue()),d[0]&8&&Q(e,"active",c[3]===Ns)},d(c){c&&k(e),r&&r.d(),l=!1,o()}}}function yp(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,"Has errors")),s=!0)},i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function bM(n){var j,Y,X,G,W,le,ee,ie;let e,t=n[2].$isNew?"New collection":"Edit collection",i,s,l,o,r,a,u,f,c,d,m,_=(j=n[2])!=null&&j.$isView?"Query":"Fields",h,b,y=!B.isEmpty(n[11]),S,C,$,T,M=!B.isEmpty((Y=n[5])==null?void 0:Y.listRule)||!B.isEmpty((X=n[5])==null?void 0:X.viewRule)||!B.isEmpty((G=n[5])==null?void 0:G.createRule)||!B.isEmpty((W=n[5])==null?void 0:W.updateRule)||!B.isEmpty((le=n[5])==null?void 0:le.deleteRule)||!B.isEmpty((ie=(ee=n[5])==null?void 0:ee.options)==null?void 0:ie.manageRule),O,D,L,P,N=!n[2].$isNew&&!n[2].system&&pp(n);r=new pe({props:{class:"form-field collection-field-name required m-b-0 "+(n[13]?"disabled":""),name:"name",$$slots:{default:[gM,({uniqueId:be})=>({46:be}),({uniqueId:be})=>[0,be?32768:0]]},$$scope:{ctx:n}}});let F=y&&gp(n),R=M&&bp(),q=n[2].$isAuth&&vp(n);return{c(){e=v("h4"),i=U(t),s=E(),N&&N.c(),l=E(),o=v("form"),H(r.$$.fragment),a=E(),u=v("input"),f=E(),c=v("div"),d=v("button"),m=v("span"),h=U(_),b=E(),F&&F.c(),S=E(),C=v("button"),$=v("span"),$.textContent="API Rules",T=E(),R&&R.c(),O=E(),q&&q.c(),p(e,"class","upsert-panel-title svelte-12y0yzb"),p(u,"type","submit"),p(u,"class","hidden"),p(u,"tabindex","-1"),p(o,"class","block"),p(m,"class","txt"),p(d,"type","button"),p(d,"class","tab-item"),Q(d,"active",n[3]===Pi),p($,"class","txt"),p(C,"type","button"),p(C,"class","tab-item"),Q(C,"active",n[3]===kl),p(c,"class","tabs-header stretched")},m(be,Se){w(be,e,Se),g(e,i),w(be,s,Se),N&&N.m(be,Se),w(be,l,Se),w(be,o,Se),V(r,o,null),g(o,a),g(o,u),w(be,f,Se),w(be,c,Se),g(c,d),g(d,m),g(m,h),g(d,b),F&&F.m(d,null),g(c,S),g(c,C),g(C,$),g(C,T),R&&R.m(C,null),g(c,O),q&&q.m(c,null),D=!0,L||(P=[J(o,"submit",et(n[28])),J(d,"click",n[29]),J(C,"click",n[30])],L=!0)},p(be,Se){var Be,ke,Te,Ze,ht,Ge,Ye,we;(!D||Se[0]&4)&&t!==(t=be[2].$isNew?"New collection":"Edit collection")&&se(i,t),!be[2].$isNew&&!be[2].system?N?(N.p(be,Se),Se[0]&4&&A(N,1)):(N=pp(be),N.c(),A(N,1),N.m(l.parentNode,l)):N&&(ae(),I(N,1,1,()=>{N=null}),ue());const Ve={};Se[0]&8192&&(Ve.class="form-field collection-field-name required m-b-0 "+(be[13]?"disabled":"")),Se[0]&8260|Se[1]&1081344&&(Ve.$$scope={dirty:Se,ctx:be}),r.$set(Ve),(!D||Se[0]&4)&&_!==(_=(Be=be[2])!=null&&Be.$isView?"Query":"Fields")&&se(h,_),Se[0]&2048&&(y=!B.isEmpty(be[11])),y?F?(F.p(be,Se),Se[0]&2048&&A(F,1)):(F=gp(be),F.c(),A(F,1),F.m(d,null)):F&&(ae(),I(F,1,1,()=>{F=null}),ue()),(!D||Se[0]&8)&&Q(d,"active",be[3]===Pi),Se[0]&32&&(M=!B.isEmpty((ke=be[5])==null?void 0:ke.listRule)||!B.isEmpty((Te=be[5])==null?void 0:Te.viewRule)||!B.isEmpty((Ze=be[5])==null?void 0:Ze.createRule)||!B.isEmpty((ht=be[5])==null?void 0:ht.updateRule)||!B.isEmpty((Ge=be[5])==null?void 0:Ge.deleteRule)||!B.isEmpty((we=(Ye=be[5])==null?void 0:Ye.options)==null?void 0:we.manageRule)),M?R?Se[0]&32&&A(R,1):(R=bp(),R.c(),A(R,1),R.m(C,null)):R&&(ae(),I(R,1,1,()=>{R=null}),ue()),(!D||Se[0]&8)&&Q(C,"active",be[3]===kl),be[2].$isAuth?q?q.p(be,Se):(q=vp(be),q.c(),q.m(c,null)):q&&(q.d(1),q=null)},i(be){D||(A(N),A(r.$$.fragment,be),A(F),A(R),D=!0)},o(be){I(N),I(r.$$.fragment,be),I(F),I(R),D=!1},d(be){be&&k(e),be&&k(s),N&&N.d(be),be&&k(l),be&&k(o),z(r),be&&k(f),be&&k(c),F&&F.d(),R&&R.d(),q&&q.d(),L=!1,Ee(P)}}}function vM(n){let e,t,i,s,l,o=n[2].$isNew?"Create":"Save changes",r,a,u,f;return{c(){e=v("button"),t=v("span"),t.textContent="Cancel",i=E(),s=v("button"),l=v("span"),r=U(o),p(t,"class","txt"),p(e,"type","button"),p(e,"class","btn btn-transparent"),e.disabled=n[9],p(l,"class","txt"),p(s,"type","button"),p(s,"class","btn btn-expanded"),s.disabled=a=!n[12]||n[9],Q(s,"btn-loading",n[9])},m(c,d){w(c,e,d),g(e,t),w(c,i,d),w(c,s,d),g(s,l),g(l,r),u||(f=[J(e,"click",n[22]),J(s,"click",n[23])],u=!0)},p(c,d){d[0]&512&&(e.disabled=c[9]),d[0]&4&&o!==(o=c[2].$isNew?"Create":"Save changes")&&se(r,o),d[0]&4608&&a!==(a=!c[12]||c[9])&&(s.disabled=a),d[0]&512&&Q(s,"btn-loading",c[9])},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,Ee(f)}}}function yM(n){let e,t,i,s,l={class:"overlay-panel-lg colored-header collection-panel",escClose:!1,overlayClose:!n[9],beforeHide:n[36],$$slots:{footer:[vM],header:[bM],default:[mM]},$$scope:{ctx:n}};e=new ln({props:l}),n[37](e),e.$on("hide",n[38]),e.$on("show",n[39]);let o={};return i=new cM({props:o}),n[40](i),i.$on("confirm",n[41]),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment)},m(r,a){V(e,r,a),w(r,t,a),V(i,r,a),s=!0},p(r,a){const u={};a[0]&512&&(u.overlayClose=!r[9]),a[0]&1040&&(u.beforeHide=r[36]),a[0]&14956|a[1]&1048576&&(u.$$scope={dirty:a,ctx:r}),e.$set(u);const f={};i.$set(f)},i(r){s||(A(e.$$.fragment,r),A(i.$$.fragment,r),s=!0)},o(r){I(e.$$.fragment,r),I(i.$$.fragment,r),s=!1},d(r){n[37](null),z(e,r),r&&k(t),n[40](null),z(i,r)}}}const Pi="schema",kl="api_rules",Ns="options",kM="base",kp="auth",wp="view";function Fr(n){return JSON.stringify(n)}function wM(n,e,t){let i,s,l,o;Je(n,Si,we=>t(5,o=we));const r={};r[kM]="Base",r[wp]="View",r[kp]="Auth";const a=$t();let u,f,c=null,d=new yn,m=!1,_=!1,h=Pi,b=Fr(d),y="";function S(we){t(3,h=we)}function C(we){return T(we),t(10,_=!0),S(Pi),u==null?void 0:u.show()}function $(){return u==null?void 0:u.hide()}async function T(we){en({}),typeof we<"u"?(t(20,c=we),t(2,d=we.$clone())):(t(20,c=null),t(2,d=new yn)),t(2,d.schema=d.schema||[],d),t(2,d.originalName=d.name||"",d),await fn(),t(21,b=Fr(d))}function M(){d.$isNew?O():f==null||f.show(c,d)}function O(){if(m)return;t(9,m=!0);const we=D();let fe;d.$isNew?fe=ce.collections.create(we):fe=ce.collections.update(d.id,we),fe.then(ze=>{Na(),Iy(ze),t(10,_=!1),$(),zt(d.$isNew?"Successfully created collection.":"Successfully updated collection."),a("save",{isNew:d.$isNew,collection:ze})}).catch(ze=>{ce.error(ze)}).finally(()=>{t(9,m=!1)})}function D(){const we=d.$export();we.schema=we.schema.slice(0);for(let fe=we.schema.length-1;fe>=0;fe--)we.schema[fe].toDelete&&we.schema.splice(fe,1);return we}function L(){c!=null&&c.id&&pn(`Do you really want to delete collection "${c==null?void 0:c.name}" and all its records?`,()=>ce.collections.delete(c==null?void 0:c.id).then(()=>{$(),zt(`Successfully deleted collection "${c==null?void 0:c.name}".`),a("delete",c),Ly(c)}).catch(we=>{ce.error(we)}))}function P(we){t(2,d.type=we,d),ai("schema")}function N(){s?pn("You have unsaved changes. Do you really want to discard them?",()=>{F()}):F()}async function F(){const we=c==null?void 0:c.$clone();if(we){if(we.id="",we.created="",we.updated="",we.name+="_duplicate",!B.isEmpty(we.schema))for(const fe of we.schema)fe.id="";if(!B.isEmpty(we.indexes))for(let fe=0;fe$(),q=()=>M(),j=()=>N(),Y=()=>L(),X=we=>{t(2,d.name=B.slugify(we.target.value),d),we.target.value=d.name},G=we=>P(we),W=()=>{l&&M()},le=()=>S(Pi),ee=()=>S(kl),ie=()=>S(Ns);function be(we){d=we,t(2,d),t(20,c)}function Se(we){d=we,t(2,d),t(20,c)}function Ve(we){d=we,t(2,d),t(20,c)}function Be(we){d=we,t(2,d),t(20,c)}const ke=()=>s&&_?(pn("You have unsaved changes. Do you really want to close the panel?",()=>{t(10,_=!1),$()}),!1):!0;function Te(we){te[we?"unshift":"push"](()=>{u=we,t(7,u)})}function Ze(we){Ne.call(this,n,we)}function ht(we){Ne.call(this,n,we)}function Ge(we){te[we?"unshift":"push"](()=>{f=we,t(8,f)})}const Ye=()=>O();return n.$$.update=()=>{var we,fe;n.$$.dirty[0]&32&&(o.schema||(we=o.options)!=null&&we.query?t(11,y=B.getNestedVal(o,"schema.message")||"Has errors"):t(11,y="")),n.$$.dirty[0]&4&&d.type===wp&&(t(2,d.createRule=null,d),t(2,d.updateRule=null,d),t(2,d.deleteRule=null,d),t(2,d.indexes=[],d)),n.$$.dirty[0]&1048580&&d!=null&&d.name&&(c==null?void 0:c.name)!=(d==null?void 0:d.name)&&t(2,d.indexes=(fe=d.indexes)==null?void 0:fe.map(ze=>B.replaceIndexTableName(ze,d.name)),d),n.$$.dirty[0]&4&&t(13,i=!d.$isNew&&d.system),n.$$.dirty[0]&2097156&&t(4,s=b!=Fr(d)),n.$$.dirty[0]&20&&t(12,l=d.$isNew||s),n.$$.dirty[0]&12&&h===Ns&&d.type!==kp&&S(Pi)},[S,$,d,h,s,o,r,u,f,m,_,y,l,i,M,O,L,P,N,C,c,b,R,q,j,Y,X,G,W,le,ee,ie,be,Se,Ve,Be,ke,Te,Ze,ht,Ge,Ye]}class cu extends ge{constructor(e){super(),_e(this,e,wM,yM,me,{changeTab:0,show:19,hide:1},null,[-1,-1])}get changeTab(){return this.$$.ctx[0]}get show(){return this.$$.ctx[19]}get hide(){return this.$$.ctx[1]}}function Sp(n,e,t){const i=n.slice();return i[15]=e[t],i}function $p(n){let e,t=n[1].length&&Cp();return{c(){t&&t.c(),e=ye()},m(i,s){t&&t.m(i,s),w(i,e,s)},p(i,s){i[1].length?t||(t=Cp(),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},d(i){t&&t.d(i),i&&k(e)}}}function Cp(n){let e;return{c(){e=v("p"),e.textContent="No collections found.",p(e,"class","txt-hint m-t-10 m-b-10 txt-center")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Tp(n,e){let t,i,s,l,o,r=e[15].name+"",a,u,f,c,d,m;return{key:n,first:null,c(){var _;t=v("a"),i=v("i"),l=E(),o=v("span"),a=U(r),u=E(),p(i,"class",s=B.getCollectionTypeIcon(e[15].type)),p(o,"class","txt"),p(t,"href",f="/collections?collectionId="+e[15].id),p(t,"class","sidebar-list-item"),p(t,"title",c=e[15].name),Q(t,"active",((_=e[5])==null?void 0:_.id)===e[15].id),this.first=t},m(_,h){w(_,t,h),g(t,i),g(t,l),g(t,o),g(o,a),g(t,u),d||(m=Me(on.call(null,t)),d=!0)},p(_,h){var b;e=_,h&8&&s!==(s=B.getCollectionTypeIcon(e[15].type))&&p(i,"class",s),h&8&&r!==(r=e[15].name+"")&&se(a,r),h&8&&f!==(f="/collections?collectionId="+e[15].id)&&p(t,"href",f),h&8&&c!==(c=e[15].name)&&p(t,"title",c),h&40&&Q(t,"active",((b=e[5])==null?void 0:b.id)===e[15].id)},d(_){_&&k(t),d=!1,m()}}}function Mp(n){let e,t,i,s;return{c(){e=v("footer"),t=v("button"),t.innerHTML=` - New collection`,p(t,"type","button"),p(t,"class","btn btn-block btn-outline"),p(e,"class","sidebar-footer")},m(l,o){w(l,e,o),g(e,t),i||(s=J(t,"click",n[12]),i=!0)},p:x,d(l){l&&k(e),i=!1,s()}}}function SM(n){let e,t,i,s,l,o,r,a,u,f,c,d=[],m=new Map,_,h,b,y,S,C,$=n[3];const T=L=>L[15].id;for(let L=0;L<$.length;L+=1){let P=Sp(n,$,L),N=T(P);m.set(N,d[L]=Tp(N,P))}let M=null;$.length||(M=$p(n));let O=!n[7]&&Mp(n),D={};return b=new cu({props:D}),n[13](b),b.$on("save",n[14]),{c(){e=v("aside"),t=v("header"),i=v("div"),s=v("div"),l=v("button"),l.innerHTML='',o=E(),r=v("input"),a=E(),u=v("hr"),f=E(),c=v("div");for(let L=0;L20),p(e,"class","page-sidebar collection-sidebar")},m(L,P){w(L,e,P),g(e,t),g(t,i),g(i,s),g(s,l),g(i,o),g(i,r),re(r,n[0]),g(e,a),g(e,u),g(e,f),g(e,c);for(let N=0;N20),L[7]?O&&(O.d(1),O=null):O?O.p(L,P):(O=Mp(L),O.c(),O.m(e,null));const N={};b.$set(N)},i(L){y||(A(b.$$.fragment,L),y=!0)},o(L){I(b.$$.fragment,L),y=!1},d(L){L&&k(e);for(let P=0;P{const n=document.querySelector(".collection-sidebar .sidebar-list-item.active");n&&(n==null||n.scrollIntoView({block:"nearest"}))},0)}function CM(n,e,t){let i,s,l,o,r,a,u;Je(n,ui,S=>t(5,o=S)),Je(n,ci,S=>t(9,r=S)),Je(n,wo,S=>t(6,a=S)),Je(n,As,S=>t(7,u=S));let f,c="";function d(S){sn(ui,o=S,o)}const m=()=>t(0,c="");function _(){c=this.value,t(0,c)}const h=()=>f==null?void 0:f.show();function b(S){te[S?"unshift":"push"](()=>{f=S,t(2,f)})}const y=S=>{var C;(C=S.detail)!=null&&C.isNew&&S.detail.collection&&d(S.detail.collection)};return n.$$.update=()=>{n.$$.dirty&512&&r&&$M(),n.$$.dirty&1&&t(1,i=c.replace(/\s+/g,"").toLowerCase()),n.$$.dirty&1&&t(4,s=c!==""),n.$$.dirty&515&&t(3,l=r.filter(S=>S.id==c||S.name.replace(/\s+/g,"").toLowerCase().includes(i)))},[c,i,f,l,s,o,a,u,d,r,m,_,h,b,y]}class TM extends ge{constructor(e){super(),_e(this,e,CM,SM,me,{})}}function Op(n,e,t){const i=n.slice();return i[14]=e[t][0],i[15]=e[t][1],i}function Ep(n){n[18]=n[19].default}function Dp(n,e,t){const i=n.slice();return i[14]=e[t][0],i[15]=e[t][1],i[21]=t,i}function Ap(n){let e;return{c(){e=v("hr"),p(e,"class","m-t-sm m-b-sm")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Ip(n,e){let t,i=e[21]===Object.keys(e[6]).length,s,l,o=e[15].label+"",r,a,u,f,c=i&&Ap();function d(){return e[9](e[14])}return{key:n,first:null,c(){t=ye(),c&&c.c(),s=E(),l=v("button"),r=U(o),a=E(),p(l,"type","button"),p(l,"class","sidebar-item"),Q(l,"active",e[5]===e[14]),this.first=t},m(m,_){w(m,t,_),c&&c.m(m,_),w(m,s,_),w(m,l,_),g(l,r),g(l,a),u||(f=J(l,"click",d),u=!0)},p(m,_){e=m,_&8&&(i=e[21]===Object.keys(e[6]).length),i?c||(c=Ap(),c.c(),c.m(s.parentNode,s)):c&&(c.d(1),c=null),_&8&&o!==(o=e[15].label+"")&&se(r,o),_&40&&Q(l,"active",e[5]===e[14])},d(m){m&&k(t),c&&c.d(m),m&&k(s),m&&k(l),u=!1,f()}}}function Lp(n){let e,t,i,s={ctx:n,current:null,token:null,hasCatch:!1,pending:EM,then:OM,catch:MM,value:19,blocks:[,,,]};return gu(t=n[15].component,s),{c(){e=ye(),s.block.c()},m(l,o){w(l,e,o),s.block.m(l,s.anchor=o),s.mount=()=>e.parentNode,s.anchor=e,i=!0},p(l,o){n=l,s.ctx=n,o&8&&t!==(t=n[15].component)&&gu(t,s)||n0(s,n,o)},i(l){i||(A(s.block),i=!0)},o(l){for(let o=0;o<3;o+=1){const r=s.blocks[o];I(r)}i=!1},d(l){l&&k(e),s.block.d(l),s.token=null,s=null}}}function MM(n){return{c:x,m:x,p:x,i:x,o:x,d:x}}function OM(n){Ep(n);let e,t,i;return e=new n[18]({props:{collection:n[2]}}),{c(){H(e.$$.fragment),t=E()},m(s,l){V(e,s,l),w(s,t,l),i=!0},p(s,l){Ep(s);const o={};l&4&&(o.collection=s[2]),e.$set(o)},i(s){i||(A(e.$$.fragment,s),i=!0)},o(s){I(e.$$.fragment,s),i=!1},d(s){z(e,s),s&&k(t)}}}function EM(n){return{c:x,m:x,p:x,i:x,o:x,d:x}}function Pp(n,e){let t,i,s,l=e[5]===e[14]&&Lp(e);return{key:n,first:null,c(){t=ye(),l&&l.c(),i=ye(),this.first=t},m(o,r){w(o,t,r),l&&l.m(o,r),w(o,i,r),s=!0},p(o,r){e=o,e[5]===e[14]?l?(l.p(e,r),r&40&&A(l,1)):(l=Lp(e),l.c(),A(l,1),l.m(i.parentNode,i)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){s||(A(l),s=!0)},o(o){I(l),s=!1},d(o){o&&k(t),l&&l.d(o),o&&k(i)}}}function DM(n){let e,t,i,s=[],l=new Map,o,r,a=[],u=new Map,f,c=Object.entries(n[3]);const d=h=>h[14];for(let h=0;hh[14];for(let h=0;hClose',p(e,"type","button"),p(e,"class","btn btn-transparent")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[8]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function IM(n){let e,t,i={class:"docs-panel",$$slots:{footer:[AM],default:[DM]},$$scope:{ctx:n}};return e=new ln({props:i}),n[10](e),e.$on("hide",n[11]),e.$on("show",n[12]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&4194348&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[10](null),z(e,s)}}}function LM(n,e,t){const i={list:{label:"List/Search",component:at(()=>import("./ListApiDocs-1c34ed35.js"),["./ListApiDocs-1c34ed35.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./ListApiDocs-68f52edd.css"],import.meta.url)},view:{label:"View",component:at(()=>import("./ViewApiDocs-16384cfd.js"),["./ViewApiDocs-16384cfd.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},create:{label:"Create",component:at(()=>import("./CreateApiDocs-e5d40084.js"),["./CreateApiDocs-e5d40084.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},update:{label:"Update",component:at(()=>import("./UpdateApiDocs-b6998bd3.js"),["./UpdateApiDocs-b6998bd3.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},delete:{label:"Delete",component:at(()=>import("./DeleteApiDocs-7b87e0c6.js"),["./DeleteApiDocs-7b87e0c6.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},realtime:{label:"Realtime",component:at(()=>import("./RealtimeApiDocs-a8ceb92b.js"),["./RealtimeApiDocs-a8ceb92b.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)}},s={"auth-with-password":{label:"Auth with password",component:at(()=>import("./AuthWithPasswordDocs-b2cad1c0.js"),["./AuthWithPasswordDocs-b2cad1c0.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},"auth-with-oauth2":{label:"Auth with OAuth2",component:at(()=>import("./AuthWithOAuth2Docs-bac5fefd.js"),["./AuthWithOAuth2Docs-bac5fefd.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},refresh:{label:"Auth refresh",component:at(()=>import("./AuthRefreshDocs-e9b0480b.js"),["./AuthRefreshDocs-e9b0480b.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},"request-verification":{label:"Request verification",component:at(()=>import("./RequestVerificationDocs-d2ea1985.js"),["./RequestVerificationDocs-d2ea1985.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-verification":{label:"Confirm verification",component:at(()=>import("./ConfirmVerificationDocs-2e4962d5.js"),["./ConfirmVerificationDocs-2e4962d5.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"request-password-reset":{label:"Request password reset",component:at(()=>import("./RequestPasswordResetDocs-e3555e96.js"),["./RequestPasswordResetDocs-e3555e96.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-password-reset":{label:"Confirm password reset",component:at(()=>import("./ConfirmPasswordResetDocs-8e59c578.js"),["./ConfirmPasswordResetDocs-8e59c578.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"request-email-change":{label:"Request email change",component:at(()=>import("./RequestEmailChangeDocs-e4095311.js"),["./RequestEmailChangeDocs-e4095311.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-email-change":{label:"Confirm email change",component:at(()=>import("./ConfirmEmailChangeDocs-29ce6532.js"),["./ConfirmEmailChangeDocs-29ce6532.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"list-auth-methods":{label:"List auth methods",component:at(()=>import("./AuthMethodsDocs-daff5785.js"),["./AuthMethodsDocs-daff5785.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},"list-linked-accounts":{label:"List OAuth2 accounts",component:at(()=>import("./ListExternalAuthsDocs-bbdc6c6d.js"),["./ListExternalAuthsDocs-bbdc6c6d.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-7f27fd99.js"],import.meta.url)},"unlink-account":{label:"Unlink OAuth2 account",component:at(()=>import("./UnlinkExternalAuthDocs-2be28d7f.js"),["./UnlinkExternalAuthDocs-2be28d7f.js","./SdkTabs-4e51916e.js","./SdkTabs-9b0b7a06.css"],import.meta.url)}};let l,o=new yn,r,a=[];a.length&&(r=Object.keys(a)[0]);function u(y){return t(2,o=y),c(Object.keys(a)[0]),l==null?void 0:l.show()}function f(){return l==null?void 0:l.hide()}function c(y){t(5,r=y)}const d=()=>f(),m=y=>c(y);function _(y){te[y?"unshift":"push"](()=>{l=y,t(4,l)})}function h(y){Ne.call(this,n,y)}function b(y){Ne.call(this,n,y)}return n.$$.update=()=>{n.$$.dirty&12&&(o.$isAuth?(t(3,a=Object.assign({},i,s)),!(o!=null&&o.options.allowUsernameAuth)&&!(o!=null&&o.options.allowEmailAuth)&&delete a["auth-with-password"],o!=null&&o.options.allowOAuth2Auth||delete a["auth-with-oauth2"]):o.$isView?(t(3,a=Object.assign({},i)),delete a.create,delete a.update,delete a.delete,delete a.realtime):t(3,a=Object.assign({},i)))},[f,c,o,a,l,r,i,u,d,m,_,h,b]}class PM extends ge{constructor(e){super(),_e(this,e,LM,IM,me,{show:7,hide:0,changeTab:1})}get show(){return this.$$.ctx[7]}get hide(){return this.$$.ctx[0]}get changeTab(){return this.$$.ctx[1]}}function NM(n){let e,t,i,s,l,o,r,a,u,f,c,d;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Username",o=E(),r=v("input"),p(t,"class",B.getFieldTypeIcon("user")),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","text"),p(r,"requried",a=!n[2]),p(r,"placeholder",u=n[2]?"Leave empty to auto generate...":n[4]),p(r,"id",f=n[13])},m(m,_){w(m,e,_),g(e,t),g(e,i),g(e,s),w(m,o,_),w(m,r,_),re(r,n[0].username),c||(d=J(r,"input",n[5]),c=!0)},p(m,_){_&8192&&l!==(l=m[13])&&p(e,"for",l),_&4&&a!==(a=!m[2])&&p(r,"requried",a),_&4&&u!==(u=m[2]?"Leave empty to auto generate...":m[4])&&p(r,"placeholder",u),_&8192&&f!==(f=m[13])&&p(r,"id",f),_&1&&r.value!==m[0].username&&re(r,m[0].username)},d(m){m&&k(e),m&&k(o),m&&k(r),c=!1,d()}}}function FM(n){let e,t,i,s,l,o,r,a,u,f,c=n[0].emailVisibility?"On":"Off",d,m,_,h,b,y,S,C;return{c(){var $;e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Email",o=E(),r=v("div"),a=v("button"),u=v("span"),f=U("Public: "),d=U(c),_=E(),h=v("input"),p(t,"class",B.getFieldTypeIcon("email")),p(s,"class","txt"),p(e,"for",l=n[13]),p(u,"class","txt"),p(a,"type","button"),p(a,"class",m="btn btn-sm btn-transparent "+(n[0].emailVisibility?"btn-success":"btn-hint")),p(r,"class","form-field-addon email-visibility-addon svelte-1751a4d"),p(h,"type","email"),h.autofocus=n[2],p(h,"autocomplete","off"),p(h,"id",b=n[13]),h.required=y=($=n[1].options)==null?void 0:$.requireEmail,p(h,"class","svelte-1751a4d")},m($,T){w($,e,T),g(e,t),g(e,i),g(e,s),w($,o,T),w($,r,T),g(r,a),g(a,u),g(u,f),g(u,d),w($,_,T),w($,h,T),re(h,n[0].email),n[2]&&h.focus(),S||(C=[Me(He.call(null,a,{text:"Make email public or private",position:"top-right"})),J(a,"click",n[6]),J(h,"input",n[7])],S=!0)},p($,T){var M;T&8192&&l!==(l=$[13])&&p(e,"for",l),T&1&&c!==(c=$[0].emailVisibility?"On":"Off")&&se(d,c),T&1&&m!==(m="btn btn-sm btn-transparent "+($[0].emailVisibility?"btn-success":"btn-hint"))&&p(a,"class",m),T&4&&(h.autofocus=$[2]),T&8192&&b!==(b=$[13])&&p(h,"id",b),T&2&&y!==(y=(M=$[1].options)==null?void 0:M.requireEmail)&&(h.required=y),T&1&&h.value!==$[0].email&&re(h,$[0].email)},d($){$&&k(e),$&&k(o),$&&k(r),$&&k(_),$&&k(h),S=!1,Ee(C)}}}function Np(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle",name:"verified",$$slots:{default:[RM,({uniqueId:i})=>({13:i}),({uniqueId:i})=>i?8192:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&24584&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function RM(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Change password"),p(e,"type","checkbox"),p(e,"id",t=n[13]),p(s,"for",o=n[13])},m(u,f){w(u,e,f),e.checked=n[3],w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[8]),r=!0)},p(u,f){f&8192&&t!==(t=u[13])&&p(e,"id",t),f&8&&(e.checked=u[3]),f&8192&&o!==(o=u[13])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Fp(n){let e,t,i,s,l,o,r,a,u;return s=new pe({props:{class:"form-field required",name:"password",$$slots:{default:[qM,({uniqueId:f})=>({13:f}),({uniqueId:f})=>f?8192:0]},$$scope:{ctx:n}}}),r=new pe({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[jM,({uniqueId:f})=>({13:f}),({uniqueId:f})=>f?8192:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),i=v("div"),H(s.$$.fragment),l=E(),o=v("div"),H(r.$$.fragment),p(i,"class","col-sm-6"),p(o,"class","col-sm-6"),p(t,"class","grid"),Q(t,"p-t-xs",n[3]),p(e,"class","block")},m(f,c){w(f,e,c),g(e,t),g(t,i),V(s,i,null),g(t,l),g(t,o),V(r,o,null),u=!0},p(f,c){const d={};c&24577&&(d.$$scope={dirty:c,ctx:f}),s.$set(d);const m={};c&24577&&(m.$$scope={dirty:c,ctx:f}),r.$set(m),(!u||c&8)&&Q(t,"p-t-xs",f[3])},i(f){u||(A(s.$$.fragment,f),A(r.$$.fragment,f),f&&Qe(()=>{u&&(a||(a=je(e,ot,{duration:150},!0)),a.run(1))}),u=!0)},o(f){I(s.$$.fragment,f),I(r.$$.fragment,f),f&&(a||(a=je(e,ot,{duration:150},!1)),a.run(0)),u=!1},d(f){f&&k(e),z(s),z(r),f&&a&&a.end()}}}function qM(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Password",o=E(),r=v("input"),p(t,"class","ri-lock-line"),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","password"),p(r,"autocomplete","new-password"),p(r,"id",a=n[13]),r.required=!0},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,o,d),w(c,r,d),re(r,n[0].password),u||(f=J(r,"input",n[9]),u=!0)},p(c,d){d&8192&&l!==(l=c[13])&&p(e,"for",l),d&8192&&a!==(a=c[13])&&p(r,"id",a),d&1&&r.value!==c[0].password&&re(r,c[0].password)},d(c){c&&k(e),c&&k(o),c&&k(r),u=!1,f()}}}function jM(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Password confirm",o=E(),r=v("input"),p(t,"class","ri-lock-line"),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","password"),p(r,"autocomplete","new-password"),p(r,"id",a=n[13]),r.required=!0},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,o,d),w(c,r,d),re(r,n[0].passwordConfirm),u||(f=J(r,"input",n[10]),u=!0)},p(c,d){d&8192&&l!==(l=c[13])&&p(e,"for",l),d&8192&&a!==(a=c[13])&&p(r,"id",a),d&1&&r.value!==c[0].passwordConfirm&&re(r,c[0].passwordConfirm)},d(c){c&&k(e),c&&k(o),c&&k(r),u=!1,f()}}}function VM(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Verified"),p(e,"type","checkbox"),p(e,"id",t=n[13]),p(s,"for",o=n[13])},m(u,f){w(u,e,f),e.checked=n[0].verified,w(u,i,f),w(u,s,f),g(s,l),r||(a=[J(e,"change",n[11]),J(e,"change",et(n[12]))],r=!0)},p(u,f){f&8192&&t!==(t=u[13])&&p(e,"id",t),f&1&&(e.checked=u[0].verified),f&8192&&o!==(o=u[13])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,Ee(a)}}}function zM(n){var b;let e,t,i,s,l,o,r,a,u,f,c,d,m;i=new pe({props:{class:"form-field "+(n[2]?"":"required"),name:"username",$$slots:{default:[NM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field "+((b=n[1].options)!=null&&b.requireEmail?"required":""),name:"email",$$slots:{default:[FM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}});let _=!n[2]&&Np(n),h=(n[2]||n[3])&&Fp(n);return d=new pe({props:{class:"form-field form-field-toggle",name:"verified",$$slots:{default:[VM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),_&&_.c(),u=E(),h&&h.c(),f=E(),c=v("div"),H(d.$$.fragment),p(t,"class","col-lg-6"),p(l,"class","col-lg-6"),p(a,"class","col-lg-12"),p(c,"class","col-lg-12"),p(e,"class","grid m-b-base")},m(y,S){w(y,e,S),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),_&&_.m(a,null),g(a,u),h&&h.m(a,null),g(e,f),g(e,c),V(d,c,null),m=!0},p(y,[S]){var M;const C={};S&4&&(C.class="form-field "+(y[2]?"":"required")),S&24581&&(C.$$scope={dirty:S,ctx:y}),i.$set(C);const $={};S&2&&($.class="form-field "+((M=y[1].options)!=null&&M.requireEmail?"required":"")),S&24583&&($.$$scope={dirty:S,ctx:y}),o.$set($),y[2]?_&&(ae(),I(_,1,1,()=>{_=null}),ue()):_?(_.p(y,S),S&4&&A(_,1)):(_=Np(y),_.c(),A(_,1),_.m(a,u)),y[2]||y[3]?h?(h.p(y,S),S&12&&A(h,1)):(h=Fp(y),h.c(),A(h,1),h.m(a,null)):h&&(ae(),I(h,1,1,()=>{h=null}),ue());const T={};S&24581&&(T.$$scope={dirty:S,ctx:y}),d.$set(T)},i(y){m||(A(i.$$.fragment,y),A(o.$$.fragment,y),A(_),A(h),A(d.$$.fragment,y),m=!0)},o(y){I(i.$$.fragment,y),I(o.$$.fragment,y),I(_),I(h),I(d.$$.fragment,y),m=!1},d(y){y&&k(e),z(i),z(o),_&&_.d(),h&&h.d(),z(d)}}}function HM(n,e,t){let{collection:i=new yn}=e,{record:s=new yi}=e,{isNew:l=s.$isNew}=e,o=s.username||null,r=!1;function a(){s.username=this.value,t(0,s),t(3,r)}const u=()=>t(0,s.emailVisibility=!s.emailVisibility,s);function f(){s.email=this.value,t(0,s),t(3,r)}function c(){r=this.checked,t(3,r)}function d(){s.password=this.value,t(0,s),t(3,r)}function m(){s.passwordConfirm=this.value,t(0,s),t(3,r)}function _(){s.verified=this.checked,t(0,s),t(3,r)}const h=b=>{l||pn("Do you really want to manually change the verified account state?",()=>{},()=>{t(0,s.verified=!b.target.checked,s)})};return n.$$set=b=>{"collection"in b&&t(1,i=b.collection),"record"in b&&t(0,s=b.record),"isNew"in b&&t(2,l=b.isNew)},n.$$.update=()=>{n.$$.dirty&1&&!s.username&&s.username!==null&&t(0,s.username=null,s),n.$$.dirty&8&&(r||(t(0,s.password=null,s),t(0,s.passwordConfirm=null,s),ai("password"),ai("passwordConfirm")))},[s,i,l,r,o,a,u,f,c,d,m,_,h]}class BM extends ge{constructor(e){super(),_e(this,e,HM,zM,me,{collection:1,record:0,isNew:2})}}function UM(n){let e,t,i,s=[n[3]],l={};for(let o=0;o{r&&(t(1,r.style.height="",r),t(1,r.style.height=Math.min(r.scrollHeight,o)+"px",r))},0)}function f(m){if((m==null?void 0:m.code)==="Enter"&&!(m!=null&&m.shiftKey)&&!(m!=null&&m.isComposing)){m.preventDefault();const _=r.closest("form");_!=null&&_.requestSubmit&&_.requestSubmit()}}Gt(()=>(u(),()=>clearTimeout(a)));function c(m){te[m?"unshift":"push"](()=>{r=m,t(1,r)})}function d(){l=this.value,t(0,l)}return n.$$set=m=>{e=qe(qe({},e),Zt(m)),t(3,s=xe(e,i)),"value"in m&&t(0,l=m.value),"maxHeight"in m&&t(4,o=m.maxHeight)},n.$$.update=()=>{n.$$.dirty&1&&typeof l!==void 0&&u()},[l,r,f,s,o,c,d]}class YM extends ge{constructor(e){super(),_e(this,e,WM,UM,me,{value:0,maxHeight:4})}}function KM(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d;function m(h){n[2](h)}let _={id:n[3],required:n[1].required};return n[0]!==void 0&&(_.value=n[0]),f=new YM({props:_}),te.push(()=>de(f,"value",m)),{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),H(f.$$.fragment),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3])},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),V(f,h,b),d=!0},p(h,b){(!d||b&2&&i!==(i=B.getFieldTypeIcon(h[1].type)))&&p(t,"class",i),(!d||b&2)&&o!==(o=h[1].name+"")&&se(r,o),(!d||b&8&&a!==(a=h[3]))&&p(e,"for",a);const y={};b&8&&(y.id=h[3]),b&2&&(y.required=h[1].required),!c&&b&1&&(c=!0,y.value=h[0],he(()=>c=!1)),f.$set(y)},i(h){d||(A(f.$$.fragment,h),d=!0)},o(h){I(f.$$.fragment,h),d=!1},d(h){h&&k(e),h&&k(u),z(f,h)}}}function JM(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[KM,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function ZM(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(o){s=o,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class GM extends ge{constructor(e){super(),_e(this,e,ZM,JM,me,{field:1,value:0})}}function XM(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_,h,b;return{c(){var y,S;e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","number"),p(f,"id",c=n[3]),f.required=d=n[1].required,p(f,"min",m=(y=n[1].options)==null?void 0:y.min),p(f,"max",_=(S=n[1].options)==null?void 0:S.max),p(f,"step","any")},m(y,S){w(y,e,S),g(e,t),g(e,s),g(e,l),g(l,r),w(y,u,S),w(y,f,S),re(f,n[0]),h||(b=J(f,"input",n[2]),h=!0)},p(y,S){var C,$;S&2&&i!==(i=B.getFieldTypeIcon(y[1].type))&&p(t,"class",i),S&2&&o!==(o=y[1].name+"")&&se(r,o),S&8&&a!==(a=y[3])&&p(e,"for",a),S&8&&c!==(c=y[3])&&p(f,"id",c),S&2&&d!==(d=y[1].required)&&(f.required=d),S&2&&m!==(m=(C=y[1].options)==null?void 0:C.min)&&p(f,"min",m),S&2&&_!==(_=($=y[1].options)==null?void 0:$.max)&&p(f,"max",_),S&1&&dt(f.value)!==y[0]&&re(f,y[0])},d(y){y&&k(e),y&&k(u),y&&k(f),h=!1,b()}}}function QM(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[XM,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function xM(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=dt(this.value),t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class e5 extends ge{constructor(e){super(),_e(this,e,xM,QM,me,{field:1,value:0})}}function t5(n){let e,t,i,s,l=n[1].name+"",o,r,a,u;return{c(){e=v("input"),i=E(),s=v("label"),o=U(l),p(e,"type","checkbox"),p(e,"id",t=n[3]),p(s,"for",r=n[3])},m(f,c){w(f,e,c),e.checked=n[0],w(f,i,c),w(f,s,c),g(s,o),a||(u=J(e,"change",n[2]),a=!0)},p(f,c){c&8&&t!==(t=f[3])&&p(e,"id",t),c&1&&(e.checked=f[0]),c&2&&l!==(l=f[1].name+"")&&se(o,l),c&8&&r!==(r=f[3])&&p(s,"for",r)},d(f){f&&k(e),f&&k(i),f&&k(s),a=!1,u()}}}function n5(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[t5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field form-field-toggle "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function i5(n,e,t){let{field:i=new kn}=e,{value:s=!1}=e;function l(){s=this.checked,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class s5 extends ge{constructor(e){super(),_e(this,e,i5,n5,me,{field:1,value:0})}}function l5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","email"),p(f,"id",c=n[3]),f.required=d=n[1].required},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),re(f,n[0]),m||(_=J(f,"input",n[2]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&8&&a!==(a=h[3])&&p(e,"for",a),b&8&&c!==(c=h[3])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&1&&f.value!==h[0]&&re(f,h[0])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function o5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[l5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function r5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=this.value,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class a5 extends ge{constructor(e){super(),_e(this,e,r5,o5,me,{field:1,value:0})}}function u5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","url"),p(f,"id",c=n[3]),f.required=d=n[1].required},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),re(f,n[0]),m||(_=J(f,"input",n[2]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&8&&a!==(a=h[3])&&p(e,"for",a),b&8&&c!==(c=h[3])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&1&&f.value!==h[0]&&re(f,h[0])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function f5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[u5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function c5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=this.value,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class d5 extends ge{constructor(e){super(),_e(this,e,c5,f5,me,{field:1,value:0})}}function Rp(n){let e,t,i,s;return{c(){e=v("div"),t=v("button"),t.innerHTML='',p(t,"type","button"),p(t,"class","link-hint clear-btn svelte-11df51y"),p(e,"class","form-field-addon")},m(l,o){w(l,e,o),g(e,t),i||(s=[Me(He.call(null,t,"Clear")),J(t,"click",n[5])],i=!0)},p:x,d(l){l&&k(e),i=!1,Ee(s)}}}function p5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_,h,b=n[0]&&!n[1].required&&Rp(n);function y($){n[6]($)}function S($){n[7]($)}let C={id:n[8],options:B.defaultFlatpickrOptions()};return n[2]!==void 0&&(C.value=n[2]),n[0]!==void 0&&(C.formattedValue=n[0]),d=new uu({props:C}),te.push(()=>de(d,"value",y)),te.push(()=>de(d,"formattedValue",S)),d.$on("close",n[3]),{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),a=U(" (UTC)"),f=E(),b&&b.c(),c=E(),H(d.$$.fragment),p(t,"class",i=ls(B.getFieldTypeIcon(n[1].type))+" svelte-11df51y"),p(l,"class","txt"),p(e,"for",u=n[8])},m($,T){w($,e,T),g(e,t),g(e,s),g(e,l),g(l,r),g(l,a),w($,f,T),b&&b.m($,T),w($,c,T),V(d,$,T),h=!0},p($,T){(!h||T&2&&i!==(i=ls(B.getFieldTypeIcon($[1].type))+" svelte-11df51y"))&&p(t,"class",i),(!h||T&2)&&o!==(o=$[1].name+"")&&se(r,o),(!h||T&256&&u!==(u=$[8]))&&p(e,"for",u),$[0]&&!$[1].required?b?b.p($,T):(b=Rp($),b.c(),b.m(c.parentNode,c)):b&&(b.d(1),b=null);const M={};T&256&&(M.id=$[8]),!m&&T&4&&(m=!0,M.value=$[2],he(()=>m=!1)),!_&&T&1&&(_=!0,M.formattedValue=$[0],he(()=>_=!1)),d.$set(M)},i($){h||(A(d.$$.fragment,$),h=!0)},o($){I(d.$$.fragment,$),h=!1},d($){$&&k(e),$&&k(f),b&&b.d($),$&&k(c),z(d,$)}}}function m5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[p5,({uniqueId:i})=>({8:i}),({uniqueId:i})=>i?256:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&775&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function h5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e,l=s;function o(c){c.detail&&c.detail.length==3&&t(0,s=c.detail[1])}function r(){t(0,s="")}const a=()=>r();function u(c){l=c,t(2,l),t(0,s)}function f(c){s=c,t(0,s)}return n.$$set=c=>{"field"in c&&t(1,i=c.field),"value"in c&&t(0,s=c.value)},n.$$.update=()=>{n.$$.dirty&1&&s&&s.length>19&&t(0,s=s.substring(0,19)),n.$$.dirty&5&&l!=s&&t(2,l=s)},[s,i,l,o,r,a,u,f]}class _5 extends ge{constructor(e){super(),_e(this,e,h5,m5,me,{field:1,value:0})}}function qp(n){let e,t,i=n[1].options.maxSelect+"",s,l;return{c(){e=v("div"),t=U("Select up to "),s=U(i),l=U(" items."),p(e,"class","help-block")},m(o,r){w(o,e,r),g(e,t),g(e,s),g(e,l)},p(o,r){r&2&&i!==(i=o[1].options.maxSelect+"")&&se(s,i)},d(o){o&&k(e)}}}function g5(n){var S,C,$,T,M,O;let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;function h(D){n[3](D)}let b={id:n[4],toggle:!n[1].required||n[2],multiple:n[2],closable:!n[2]||((S=n[0])==null?void 0:S.length)>=((C=n[1].options)==null?void 0:C.maxSelect),items:($=n[1].options)==null?void 0:$.values,searchable:((M=(T=n[1].options)==null?void 0:T.values)==null?void 0:M.length)>5};n[0]!==void 0&&(b.selected=n[0]),f=new fu({props:b}),te.push(()=>de(f,"selected",h));let y=((O=n[1].options)==null?void 0:O.maxSelect)>1&&qp(n);return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),H(f.$$.fragment),d=E(),y&&y.c(),m=ye(),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[4])},m(D,L){w(D,e,L),g(e,t),g(e,s),g(e,l),g(l,r),w(D,u,L),V(f,D,L),w(D,d,L),y&&y.m(D,L),w(D,m,L),_=!0},p(D,L){var N,F,R,q,j,Y;(!_||L&2&&i!==(i=B.getFieldTypeIcon(D[1].type)))&&p(t,"class",i),(!_||L&2)&&o!==(o=D[1].name+"")&&se(r,o),(!_||L&16&&a!==(a=D[4]))&&p(e,"for",a);const P={};L&16&&(P.id=D[4]),L&6&&(P.toggle=!D[1].required||D[2]),L&4&&(P.multiple=D[2]),L&7&&(P.closable=!D[2]||((N=D[0])==null?void 0:N.length)>=((F=D[1].options)==null?void 0:F.maxSelect)),L&2&&(P.items=(R=D[1].options)==null?void 0:R.values),L&2&&(P.searchable=((j=(q=D[1].options)==null?void 0:q.values)==null?void 0:j.length)>5),!c&&L&1&&(c=!0,P.selected=D[0],he(()=>c=!1)),f.$set(P),((Y=D[1].options)==null?void 0:Y.maxSelect)>1?y?y.p(D,L):(y=qp(D),y.c(),y.m(m.parentNode,m)):y&&(y.d(1),y=null)},i(D){_||(A(f.$$.fragment,D),_=!0)},o(D){I(f.$$.fragment,D),_=!1},d(D){D&&k(e),D&&k(u),z(f,D),D&&k(d),y&&y.d(D),D&&k(m)}}}function b5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[g5,({uniqueId:i})=>({4:i}),({uniqueId:i})=>i?16:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&55&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function v5(n,e,t){let i,{field:s=new kn}=e,{value:l=void 0}=e;function o(r){l=r,t(0,l),t(2,i),t(1,s)}return n.$$set=r=>{"field"in r&&t(1,s=r.field),"value"in r&&t(0,l=r.value)},n.$$.update=()=>{var r;n.$$.dirty&2&&t(2,i=((r=s.options)==null?void 0:r.maxSelect)>1),n.$$.dirty&5&&typeof l>"u"&&t(0,l=i?[]:""),n.$$.dirty&7&&i&&Array.isArray(l)&&l.length>s.options.maxSelect&&t(0,l=l.slice(l.length-s.options.maxSelect))},[l,s,i,o]}class y5 extends ge{constructor(e){super(),_e(this,e,v5,b5,me,{field:1,value:0})}}function k5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("textarea"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[4]),p(f,"id",c=n[4]),p(f,"class","txt-mono"),f.required=d=n[1].required,f.value=n[2]},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),m||(_=J(f,"input",n[3]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&16&&a!==(a=h[4])&&p(e,"for",a),b&16&&c!==(c=h[4])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&4&&(f.value=h[2])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function w5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[k5,({uniqueId:i})=>({4:i}),({uniqueId:i})=>i?16:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&55&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function S5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e,l=JSON.stringify(typeof s>"u"?null:s,null,2);const o=r=>{t(2,l=r.target.value),t(0,s=r.target.value.trim())};return n.$$set=r=>{"field"in r&&t(1,i=r.field),"value"in r&&t(0,s=r.value)},n.$$.update=()=>{n.$$.dirty&5&&s!==(l==null?void 0:l.trim())&&(t(2,l=JSON.stringify(typeof s>"u"?null:s,null,2)),t(0,s=l))},[s,i,l,o]}class $5 extends ge{constructor(e){super(),_e(this,e,S5,w5,me,{field:1,value:0})}}function C5(n){let e,t;return{c(){e=v("i"),p(e,"class","ri-file-line"),p(e,"alt",t=n[0].name)},m(i,s){w(i,e,s)},p(i,s){s&1&&t!==(t=i[0].name)&&p(e,"alt",t)},d(i){i&&k(e)}}}function T5(n){let e,t,i;return{c(){e=v("img"),p(e,"draggable",!1),hn(e.src,t=n[2])||p(e,"src",t),p(e,"width",n[1]),p(e,"height",n[1]),p(e,"alt",i=n[0].name)},m(s,l){w(s,e,l)},p(s,l){l&4&&!hn(e.src,t=s[2])&&p(e,"src",t),l&2&&p(e,"width",s[1]),l&2&&p(e,"height",s[1]),l&1&&i!==(i=s[0].name)&&p(e,"alt",i)},d(s){s&&k(e)}}}function M5(n){let e;function t(l,o){return l[2]?T5:C5}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,[o]){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},i:x,o:x,d(l){s.d(l),l&&k(e)}}}function O5(n,e,t){let i,{file:s}=e,{size:l=50}=e;function o(){B.hasImageExtension(s==null?void 0:s.name)?B.generateThumb(s,l,l).then(r=>{t(2,i=r)}).catch(r=>{t(2,i=""),console.warn("Unable to generate thumb: ",r)}):t(2,i="")}return n.$$set=r=>{"file"in r&&t(0,s=r.file),"size"in r&&t(1,l=r.size)},n.$$.update=()=>{n.$$.dirty&1&&typeof s<"u"&&o()},t(2,i=""),[s,l,i]}class E5 extends ge{constructor(e){super(),_e(this,e,O5,M5,me,{file:0,size:1})}}function jp(n){let e;function t(l,o){return l[4]==="image"?A5:D5}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,o){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},d(l){s.d(l),l&&k(e)}}}function D5(n){let e,t;return{c(){e=v("object"),t=U("Cannot preview the file."),p(e,"title",n[2]),p(e,"data",n[1])},m(i,s){w(i,e,s),g(e,t)},p(i,s){s&4&&p(e,"title",i[2]),s&2&&p(e,"data",i[1])},d(i){i&&k(e)}}}function A5(n){let e,t,i;return{c(){e=v("img"),hn(e.src,t=n[1])||p(e,"src",t),p(e,"alt",i="Preview "+n[2])},m(s,l){w(s,e,l)},p(s,l){l&2&&!hn(e.src,t=s[1])&&p(e,"src",t),l&4&&i!==(i="Preview "+s[2])&&p(e,"alt",i)},d(s){s&&k(e)}}}function I5(n){var s;let e=(s=n[3])==null?void 0:s.isActive(),t,i=e&&jp(n);return{c(){i&&i.c(),t=ye()},m(l,o){i&&i.m(l,o),w(l,t,o)},p(l,o){var r;o&8&&(e=(r=l[3])==null?void 0:r.isActive()),e?i?i.p(l,o):(i=jp(l),i.c(),i.m(t.parentNode,t)):i&&(i.d(1),i=null)},d(l){i&&i.d(l),l&&k(t)}}}function L5(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","overlay-close")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[0])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function P5(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("a"),t=U(n[2]),i=E(),s=v("i"),l=E(),o=v("div"),r=E(),a=v("button"),a.textContent="Close",p(s,"class","ri-external-link-line"),p(e,"href",n[1]),p(e,"title",n[2]),p(e,"target","_blank"),p(e,"rel","noreferrer noopener"),p(e,"class","link-hint txt-ellipsis inline-flex"),p(o,"class","flex-fill"),p(a,"type","button"),p(a,"class","btn btn-transparent")},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,l,d),w(c,o,d),w(c,r,d),w(c,a,d),u||(f=J(a,"click",n[0]),u=!0)},p(c,d){d&4&&se(t,c[2]),d&2&&p(e,"href",c[1]),d&4&&p(e,"title",c[2])},d(c){c&&k(e),c&&k(l),c&&k(o),c&&k(r),c&&k(a),u=!1,f()}}}function N5(n){let e,t,i={class:"preview preview-"+n[4],btnClose:!1,popup:!0,$$slots:{footer:[P5],header:[L5],default:[I5]},$$scope:{ctx:n}};return e=new ln({props:i}),n[7](e),e.$on("show",n[8]),e.$on("hide",n[9]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&16&&(o.class="preview preview-"+s[4]),l&1054&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[7](null),z(e,s)}}}function F5(n,e,t){let i,s,l,o,r="";function a(m){m!==""&&(t(1,r=m),o==null||o.show())}function u(){return o==null?void 0:o.hide()}function f(m){te[m?"unshift":"push"](()=>{o=m,t(3,o)})}function c(m){Ne.call(this,n,m)}function d(m){Ne.call(this,n,m)}return n.$$.update=()=>{n.$$.dirty&2&&t(6,i=r.indexOf("?")),n.$$.dirty&66&&t(2,s=r.substring(r.lastIndexOf("/")+1,i>0?i:void 0)),n.$$.dirty&4&&t(4,l=B.getFileType(s))},[u,r,s,o,l,a,i,f,c,d]}class R5 extends ge{constructor(e){super(),_e(this,e,F5,N5,me,{show:5,hide:0})}get show(){return this.$$.ctx[5]}get hide(){return this.$$.ctx[0]}}function q5(n){let e,t,i,s,l;function o(u,f){return u[3]==="image"?H5:u[3]==="video"||u[3]==="audio"?z5:V5}let r=o(n),a=r(n);return{c(){e=v("a"),a.c(),p(e,"draggable",!1),p(e,"class",t="thumb "+(n[1]?`thumb-${n[1]}`:"")),p(e,"href",n[6]),p(e,"target","_blank"),p(e,"rel","noreferrer"),p(e,"title",i=(n[7]?"Preview":"Download")+" "+n[0])},m(u,f){w(u,e,f),a.m(e,null),s||(l=J(e,"click",An(n[11])),s=!0)},p(u,f){r===(r=o(u))&&a?a.p(u,f):(a.d(1),a=r(u),a&&(a.c(),a.m(e,null))),f&2&&t!==(t="thumb "+(u[1]?`thumb-${u[1]}`:""))&&p(e,"class",t),f&64&&p(e,"href",u[6]),f&129&&i!==(i=(u[7]?"Preview":"Download")+" "+u[0])&&p(e,"title",i)},d(u){u&&k(e),a.d(),s=!1,l()}}}function j5(n){let e,t;return{c(){e=v("div"),p(e,"class",t="thumb "+(n[1]?`thumb-${n[1]}`:""))},m(i,s){w(i,e,s)},p(i,s){s&2&&t!==(t="thumb "+(i[1]?`thumb-${i[1]}`:""))&&p(e,"class",t)},d(i){i&&k(e)}}}function V5(n){let e;return{c(){e=v("i"),p(e,"class","ri-file-3-line")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function z5(n){let e;return{c(){e=v("i"),p(e,"class","ri-video-line")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function H5(n){let e,t,i,s,l;return{c(){e=v("img"),p(e,"draggable",!1),hn(e.src,t=n[5])||p(e,"src",t),p(e,"alt",n[0]),p(e,"title",i="Preview "+n[0])},m(o,r){w(o,e,r),s||(l=J(e,"error",n[8]),s=!0)},p(o,r){r&32&&!hn(e.src,t=o[5])&&p(e,"src",t),r&1&&p(e,"alt",o[0]),r&1&&i!==(i="Preview "+o[0])&&p(e,"title",i)},d(o){o&&k(e),s=!1,l()}}}function B5(n){let e,t,i;function s(a,u){return a[2]?j5:q5}let l=s(n),o=l(n),r={};return t=new R5({props:r}),n[12](t),{c(){o.c(),e=E(),H(t.$$.fragment)},m(a,u){o.m(a,u),w(a,e,u),V(t,a,u),i=!0},p(a,[u]){l===(l=s(a))&&o?o.p(a,u):(o.d(1),o=l(a),o&&(o.c(),o.m(e.parentNode,e)));const f={};t.$set(f)},i(a){i||(A(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){o.d(a),a&&k(e),n[12](null),z(t,a)}}}function U5(n,e,t){let i,s,{record:l=null}=e,{filename:o=""}=e,{size:r=""}=e,a,u="",f="",c="",d=!1;m();async function m(){t(2,d=!0);try{t(10,c=await ce.getAdminFileToken(l.collectionId))}catch(y){console.warn("File token failure:",y)}t(2,d=!1)}function _(){t(5,u="")}const h=y=>{s&&(y.preventDefault(),a==null||a.show(f))};function b(y){te[y?"unshift":"push"](()=>{a=y,t(4,a)})}return n.$$set=y=>{"record"in y&&t(9,l=y.record),"filename"in y&&t(0,o=y.filename),"size"in y&&t(1,r=y.size)},n.$$.update=()=>{n.$$.dirty&1&&t(3,i=B.getFileType(o)),n.$$.dirty&9&&t(7,s=["image","audio","video"].includes(i)||o.endsWith(".pdf")),n.$$.dirty&1541&&t(6,f=d?"":ce.files.getUrl(l,o,{token:c})),n.$$.dirty&1541&&t(5,u=d?"":ce.files.getUrl(l,o,{thumb:"100x100",token:c}))},[o,r,d,i,a,u,f,s,_,l,c,h,b]}class du extends ge{constructor(e){super(),_e(this,e,U5,B5,me,{record:9,filename:0,size:1})}}function Vp(n,e,t){const i=n.slice();return i[29]=e[t],i[31]=t,i}function zp(n,e,t){const i=n.slice();i[34]=e[t],i[31]=t;const s=i[2].includes(i[34]);return i[35]=s,i}function W5(n){let e,t,i;function s(){return n[17](n[34])}return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-transparent btn-hint btn-sm btn-circle btn-remove")},m(l,o){w(l,e,o),t||(i=[Me(He.call(null,e,"Remove file")),J(e,"click",s)],t=!0)},p(l,o){n=l},d(l){l&&k(e),t=!1,Ee(i)}}}function Y5(n){let e,t,i;function s(){return n[16](n[34])}return{c(){e=v("button"),e.innerHTML='Restore',p(e,"type","button"),p(e,"class","btn btn-sm btn-danger btn-transparent")},m(l,o){w(l,e,o),t||(i=J(e,"click",s),t=!0)},p(l,o){n=l},d(l){l&&k(e),t=!1,i()}}}function K5(n){let e,t,i,s,l,o,r=n[34]+"",a,u,f,c,d,m;i=new du({props:{record:n[3],filename:n[34]}});function _(y,S){return y[35]?Y5:W5}let h=_(n),b=h(n);return{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),o=v("a"),a=U(r),c=E(),d=v("div"),b.c(),Q(t,"fade",n[35]),p(o,"draggable",!1),p(o,"href",u=ce.files.getUrl(n[3],n[34],{token:n[10]})),p(o,"class",f="txt-ellipsis "+(n[35]?"txt-strikethrough txt-hint":"link-primary")),p(o,"title","Download"),p(o,"target","_blank"),p(o,"rel","noopener noreferrer"),p(l,"class","content"),p(d,"class","actions"),p(e,"class","list-item"),Q(e,"dragging",n[32]),Q(e,"dragover",n[33])},m(y,S){w(y,e,S),g(e,t),V(i,t,null),g(e,s),g(e,l),g(l,o),g(o,a),g(e,c),g(e,d),b.m(d,null),m=!0},p(y,S){const C={};S[0]&8&&(C.record=y[3]),S[0]&32&&(C.filename=y[34]),i.$set(C),(!m||S[0]&36)&&Q(t,"fade",y[35]),(!m||S[0]&32)&&r!==(r=y[34]+"")&&se(a,r),(!m||S[0]&1064&&u!==(u=ce.files.getUrl(y[3],y[34],{token:y[10]})))&&p(o,"href",u),(!m||S[0]&36&&f!==(f="txt-ellipsis "+(y[35]?"txt-strikethrough txt-hint":"link-primary")))&&p(o,"class",f),h===(h=_(y))&&b?b.p(y,S):(b.d(1),b=h(y),b&&(b.c(),b.m(d,null))),(!m||S[1]&2)&&Q(e,"dragging",y[32]),(!m||S[1]&4)&&Q(e,"dragover",y[33])},i(y){m||(A(i.$$.fragment,y),m=!0)},o(y){I(i.$$.fragment,y),m=!1},d(y){y&&k(e),z(i),b.d()}}}function Hp(n,e){let t,i,s,l;function o(a){e[18](a)}let r={group:e[4].name+"_uploaded",index:e[31],disabled:!e[6],$$slots:{default:[K5,({dragging:a,dragover:u})=>({32:a,33:u}),({dragging:a,dragover:u})=>[0,(a?2:0)|(u?4:0)]]},$$scope:{ctx:e}};return e[0]!==void 0&&(r.list=e[0]),i=new Nl({props:r}),te.push(()=>de(i,"list",o)),{key:n,first:null,c(){t=ye(),H(i.$$.fragment),this.first=t},m(a,u){w(a,t,u),V(i,a,u),l=!0},p(a,u){e=a;const f={};u[0]&16&&(f.group=e[4].name+"_uploaded"),u[0]&32&&(f.index=e[31]),u[0]&64&&(f.disabled=!e[6]),u[0]&1068|u[1]&70&&(f.$$scope={dirty:u,ctx:e}),!s&&u[0]&1&&(s=!0,f.list=e[0],he(()=>s=!1)),i.$set(f)},i(a){l||(A(i.$$.fragment,a),l=!0)},o(a){I(i.$$.fragment,a),l=!1},d(a){a&&k(t),z(i,a)}}}function J5(n){let e,t,i,s,l,o,r,a,u=n[29].name+"",f,c,d,m,_,h,b;i=new E5({props:{file:n[29]}});function y(){return n[19](n[31])}return{c(){e=v("div"),t=v("figure"),H(i.$$.fragment),s=E(),l=v("div"),o=v("small"),o.textContent="New",r=E(),a=v("span"),f=U(u),d=E(),m=v("button"),m.innerHTML='',p(t,"class","thumb"),p(o,"class","label label-success m-r-5"),p(a,"class","txt"),p(l,"class","filename m-r-auto"),p(l,"title",c=n[29].name),p(m,"type","button"),p(m,"class","btn btn-transparent btn-hint btn-sm btn-circle btn-remove"),p(e,"class","list-item"),Q(e,"dragging",n[32]),Q(e,"dragover",n[33])},m(S,C){w(S,e,C),g(e,t),V(i,t,null),g(e,s),g(e,l),g(l,o),g(l,r),g(l,a),g(a,f),g(e,d),g(e,m),_=!0,h||(b=[Me(He.call(null,m,"Remove file")),J(m,"click",y)],h=!0)},p(S,C){n=S;const $={};C[0]&2&&($.file=n[29]),i.$set($),(!_||C[0]&2)&&u!==(u=n[29].name+"")&&se(f,u),(!_||C[0]&2&&c!==(c=n[29].name))&&p(l,"title",c),(!_||C[1]&2)&&Q(e,"dragging",n[32]),(!_||C[1]&4)&&Q(e,"dragover",n[33])},i(S){_||(A(i.$$.fragment,S),_=!0)},o(S){I(i.$$.fragment,S),_=!1},d(S){S&&k(e),z(i),h=!1,Ee(b)}}}function Bp(n,e){let t,i,s,l;function o(a){e[20](a)}let r={group:e[4].name+"_new",index:e[31],disabled:!e[6],$$slots:{default:[J5,({dragging:a,dragover:u})=>({32:a,33:u}),({dragging:a,dragover:u})=>[0,(a?2:0)|(u?4:0)]]},$$scope:{ctx:e}};return e[1]!==void 0&&(r.list=e[1]),i=new Nl({props:r}),te.push(()=>de(i,"list",o)),{key:n,first:null,c(){t=ye(),H(i.$$.fragment),this.first=t},m(a,u){w(a,t,u),V(i,a,u),l=!0},p(a,u){e=a;const f={};u[0]&16&&(f.group=e[4].name+"_new"),u[0]&2&&(f.index=e[31]),u[0]&64&&(f.disabled=!e[6]),u[0]&2|u[1]&70&&(f.$$scope={dirty:u,ctx:e}),!s&&u[0]&2&&(s=!0,f.list=e[1],he(()=>s=!1)),i.$set(f)},i(a){l||(A(i.$$.fragment,a),l=!0)},o(a){I(i.$$.fragment,a),l=!1},d(a){a&&k(t),z(i,a)}}}function Z5(n){let e,t,i,s,l,o=n[4].name+"",r,a,u,f,c=[],d=new Map,m,_=[],h=new Map,b,y,S,C,$,T,M,O,D,L,P,N,F=n[5];const R=Y=>Y[34]+Y[3].id;for(let Y=0;YY[29].name+Y[31];for(let Y=0;YNew collection`,p(t,"type","button"),p(t,"class","btn btn-block btn-outline"),p(e,"class","sidebar-footer")},m(l,o){w(l,e,o),g(e,t),i||(s=J(t,"click",n[12]),i=!0)},p:x,d(l){l&&k(e),i=!1,s()}}}function SM(n){let e,t,i,s,l,o,r,a,u,f,c,d=[],m=new Map,_,h,b,y,S,C,$=n[3];const T=L=>L[15].id;for(let L=0;L<$.length;L+=1){let P=Sp(n,$,L),N=T(P);m.set(N,d[L]=Tp(N,P))}let M=null;$.length||(M=$p(n));let O=!n[7]&&Mp(n),D={};return b=new cu({props:D}),n[13](b),b.$on("save",n[14]),{c(){e=v("aside"),t=v("header"),i=v("div"),s=v("div"),l=v("button"),l.innerHTML='',o=E(),r=v("input"),a=E(),u=v("hr"),f=E(),c=v("div");for(let L=0;L20),p(e,"class","page-sidebar collection-sidebar")},m(L,P){w(L,e,P),g(e,t),g(t,i),g(i,s),g(s,l),g(i,o),g(i,r),re(r,n[0]),g(e,a),g(e,u),g(e,f),g(e,c);for(let N=0;N20),L[7]?O&&(O.d(1),O=null):O?O.p(L,P):(O=Mp(L),O.c(),O.m(e,null));const N={};b.$set(N)},i(L){y||(A(b.$$.fragment,L),y=!0)},o(L){I(b.$$.fragment,L),y=!1},d(L){L&&k(e);for(let P=0;P{const n=document.querySelector(".collection-sidebar .sidebar-list-item.active");n&&(n==null||n.scrollIntoView({block:"nearest"}))},0)}function CM(n,e,t){let i,s,l,o,r,a,u;Je(n,ui,S=>t(5,o=S)),Je(n,ci,S=>t(9,r=S)),Je(n,wo,S=>t(6,a=S)),Je(n,As,S=>t(7,u=S));let f,c="";function d(S){sn(ui,o=S,o)}const m=()=>t(0,c="");function _(){c=this.value,t(0,c)}const h=()=>f==null?void 0:f.show();function b(S){te[S?"unshift":"push"](()=>{f=S,t(2,f)})}const y=S=>{var C;(C=S.detail)!=null&&C.isNew&&S.detail.collection&&d(S.detail.collection)};return n.$$.update=()=>{n.$$.dirty&512&&r&&$M(),n.$$.dirty&1&&t(1,i=c.replace(/\s+/g,"").toLowerCase()),n.$$.dirty&1&&t(4,s=c!==""),n.$$.dirty&515&&t(3,l=r.filter(S=>S.id==c||S.name.replace(/\s+/g,"").toLowerCase().includes(i)))},[c,i,f,l,s,o,a,u,d,r,m,_,h,b,y]}class TM extends ge{constructor(e){super(),_e(this,e,CM,SM,me,{})}}function Op(n,e,t){const i=n.slice();return i[14]=e[t][0],i[15]=e[t][1],i}function Ep(n){n[18]=n[19].default}function Dp(n,e,t){const i=n.slice();return i[14]=e[t][0],i[15]=e[t][1],i[21]=t,i}function Ap(n){let e;return{c(){e=v("hr"),p(e,"class","m-t-sm m-b-sm")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Ip(n,e){let t,i=e[21]===Object.keys(e[6]).length,s,l,o=e[15].label+"",r,a,u,f,c=i&&Ap();function d(){return e[9](e[14])}return{key:n,first:null,c(){t=ye(),c&&c.c(),s=E(),l=v("button"),r=U(o),a=E(),p(l,"type","button"),p(l,"class","sidebar-item"),Q(l,"active",e[5]===e[14]),this.first=t},m(m,_){w(m,t,_),c&&c.m(m,_),w(m,s,_),w(m,l,_),g(l,r),g(l,a),u||(f=J(l,"click",d),u=!0)},p(m,_){e=m,_&8&&(i=e[21]===Object.keys(e[6]).length),i?c||(c=Ap(),c.c(),c.m(s.parentNode,s)):c&&(c.d(1),c=null),_&8&&o!==(o=e[15].label+"")&&se(r,o),_&40&&Q(l,"active",e[5]===e[14])},d(m){m&&k(t),c&&c.d(m),m&&k(s),m&&k(l),u=!1,f()}}}function Lp(n){let e,t,i,s={ctx:n,current:null,token:null,hasCatch:!1,pending:EM,then:OM,catch:MM,value:19,blocks:[,,,]};return gu(t=n[15].component,s),{c(){e=ye(),s.block.c()},m(l,o){w(l,e,o),s.block.m(l,s.anchor=o),s.mount=()=>e.parentNode,s.anchor=e,i=!0},p(l,o){n=l,s.ctx=n,o&8&&t!==(t=n[15].component)&&gu(t,s)||n0(s,n,o)},i(l){i||(A(s.block),i=!0)},o(l){for(let o=0;o<3;o+=1){const r=s.blocks[o];I(r)}i=!1},d(l){l&&k(e),s.block.d(l),s.token=null,s=null}}}function MM(n){return{c:x,m:x,p:x,i:x,o:x,d:x}}function OM(n){Ep(n);let e,t,i;return e=new n[18]({props:{collection:n[2]}}),{c(){H(e.$$.fragment),t=E()},m(s,l){V(e,s,l),w(s,t,l),i=!0},p(s,l){Ep(s);const o={};l&4&&(o.collection=s[2]),e.$set(o)},i(s){i||(A(e.$$.fragment,s),i=!0)},o(s){I(e.$$.fragment,s),i=!1},d(s){z(e,s),s&&k(t)}}}function EM(n){return{c:x,m:x,p:x,i:x,o:x,d:x}}function Pp(n,e){let t,i,s,l=e[5]===e[14]&&Lp(e);return{key:n,first:null,c(){t=ye(),l&&l.c(),i=ye(),this.first=t},m(o,r){w(o,t,r),l&&l.m(o,r),w(o,i,r),s=!0},p(o,r){e=o,e[5]===e[14]?l?(l.p(e,r),r&40&&A(l,1)):(l=Lp(e),l.c(),A(l,1),l.m(i.parentNode,i)):l&&(ae(),I(l,1,1,()=>{l=null}),ue())},i(o){s||(A(l),s=!0)},o(o){I(l),s=!1},d(o){o&&k(t),l&&l.d(o),o&&k(i)}}}function DM(n){let e,t,i,s=[],l=new Map,o,r,a=[],u=new Map,f,c=Object.entries(n[3]);const d=h=>h[14];for(let h=0;hh[14];for(let h=0;hClose',p(e,"type","button"),p(e,"class","btn btn-transparent")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[8]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function IM(n){let e,t,i={class:"docs-panel",$$slots:{footer:[AM],default:[DM]},$$scope:{ctx:n}};return e=new ln({props:i}),n[10](e),e.$on("hide",n[11]),e.$on("show",n[12]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&4194348&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[10](null),z(e,s)}}}function LM(n,e,t){const i={list:{label:"List/Search",component:at(()=>import("./ListApiDocs-79051d7c.js"),["./ListApiDocs-79051d7c.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./ListApiDocs-68f52edd.css"],import.meta.url)},view:{label:"View",component:at(()=>import("./ViewApiDocs-b8c8d6b0.js"),["./ViewApiDocs-b8c8d6b0.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},create:{label:"Create",component:at(()=>import("./CreateApiDocs-87b171bc.js"),["./CreateApiDocs-87b171bc.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},update:{label:"Update",component:at(()=>import("./UpdateApiDocs-4676a3d3.js"),["./UpdateApiDocs-4676a3d3.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},delete:{label:"Delete",component:at(()=>import("./DeleteApiDocs-21b64d9e.js"),["./DeleteApiDocs-21b64d9e.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},realtime:{label:"Realtime",component:at(()=>import("./RealtimeApiDocs-4a99164d.js"),["./RealtimeApiDocs-4a99164d.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)}},s={"auth-with-password":{label:"Auth with password",component:at(()=>import("./AuthWithPasswordDocs-a8faaef0.js"),["./AuthWithPasswordDocs-a8faaef0.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},"auth-with-oauth2":{label:"Auth with OAuth2",component:at(()=>import("./AuthWithOAuth2Docs-67e6c0b5.js"),["./AuthWithOAuth2Docs-67e6c0b5.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},refresh:{label:"Auth refresh",component:at(()=>import("./AuthRefreshDocs-52bd3b5e.js"),["./AuthRefreshDocs-52bd3b5e.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},"request-verification":{label:"Request verification",component:at(()=>import("./RequestVerificationDocs-a2f4a405.js"),["./RequestVerificationDocs-a2f4a405.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-verification":{label:"Confirm verification",component:at(()=>import("./ConfirmVerificationDocs-0d4352b6.js"),["./ConfirmVerificationDocs-0d4352b6.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"request-password-reset":{label:"Request password reset",component:at(()=>import("./RequestPasswordResetDocs-2178c9c8.js"),["./RequestPasswordResetDocs-2178c9c8.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-password-reset":{label:"Confirm password reset",component:at(()=>import("./ConfirmPasswordResetDocs-e4787ad1.js"),["./ConfirmPasswordResetDocs-e4787ad1.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"request-email-change":{label:"Request email change",component:at(()=>import("./RequestEmailChangeDocs-e01ea9b6.js"),["./RequestEmailChangeDocs-e01ea9b6.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"confirm-email-change":{label:"Confirm email change",component:at(()=>import("./ConfirmEmailChangeDocs-b05f9dfe.js"),["./ConfirmEmailChangeDocs-b05f9dfe.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)},"list-auth-methods":{label:"List auth methods",component:at(()=>import("./AuthMethodsDocs-b9811beb.js"),["./AuthMethodsDocs-b9811beb.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},"list-linked-accounts":{label:"List OAuth2 accounts",component:at(()=>import("./ListExternalAuthsDocs-8a43e213.js"),["./ListExternalAuthsDocs-8a43e213.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css","./FieldsQueryParam-2bcd23bc.js"],import.meta.url)},"unlink-account":{label:"Unlink OAuth2 account",component:at(()=>import("./UnlinkExternalAuthDocs-e63af9bf.js"),["./UnlinkExternalAuthDocs-e63af9bf.js","./SdkTabs-f9f405f6.js","./SdkTabs-9b0b7a06.css"],import.meta.url)}};let l,o=new yn,r,a=[];a.length&&(r=Object.keys(a)[0]);function u(y){return t(2,o=y),c(Object.keys(a)[0]),l==null?void 0:l.show()}function f(){return l==null?void 0:l.hide()}function c(y){t(5,r=y)}const d=()=>f(),m=y=>c(y);function _(y){te[y?"unshift":"push"](()=>{l=y,t(4,l)})}function h(y){Ne.call(this,n,y)}function b(y){Ne.call(this,n,y)}return n.$$.update=()=>{n.$$.dirty&12&&(o.$isAuth?(t(3,a=Object.assign({},i,s)),!(o!=null&&o.options.allowUsernameAuth)&&!(o!=null&&o.options.allowEmailAuth)&&delete a["auth-with-password"],o!=null&&o.options.allowOAuth2Auth||delete a["auth-with-oauth2"]):o.$isView?(t(3,a=Object.assign({},i)),delete a.create,delete a.update,delete a.delete,delete a.realtime):t(3,a=Object.assign({},i)))},[f,c,o,a,l,r,i,u,d,m,_,h,b]}class PM extends ge{constructor(e){super(),_e(this,e,LM,IM,me,{show:7,hide:0,changeTab:1})}get show(){return this.$$.ctx[7]}get hide(){return this.$$.ctx[0]}get changeTab(){return this.$$.ctx[1]}}function NM(n){let e,t,i,s,l,o,r,a,u,f,c,d;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Username",o=E(),r=v("input"),p(t,"class",B.getFieldTypeIcon("user")),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","text"),p(r,"requried",a=!n[2]),p(r,"placeholder",u=n[2]?"Leave empty to auto generate...":n[4]),p(r,"id",f=n[13])},m(m,_){w(m,e,_),g(e,t),g(e,i),g(e,s),w(m,o,_),w(m,r,_),re(r,n[0].username),c||(d=J(r,"input",n[5]),c=!0)},p(m,_){_&8192&&l!==(l=m[13])&&p(e,"for",l),_&4&&a!==(a=!m[2])&&p(r,"requried",a),_&4&&u!==(u=m[2]?"Leave empty to auto generate...":m[4])&&p(r,"placeholder",u),_&8192&&f!==(f=m[13])&&p(r,"id",f),_&1&&r.value!==m[0].username&&re(r,m[0].username)},d(m){m&&k(e),m&&k(o),m&&k(r),c=!1,d()}}}function FM(n){let e,t,i,s,l,o,r,a,u,f,c=n[0].emailVisibility?"On":"Off",d,m,_,h,b,y,S,C;return{c(){var $;e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Email",o=E(),r=v("div"),a=v("button"),u=v("span"),f=U("Public: "),d=U(c),_=E(),h=v("input"),p(t,"class",B.getFieldTypeIcon("email")),p(s,"class","txt"),p(e,"for",l=n[13]),p(u,"class","txt"),p(a,"type","button"),p(a,"class",m="btn btn-sm btn-transparent "+(n[0].emailVisibility?"btn-success":"btn-hint")),p(r,"class","form-field-addon email-visibility-addon svelte-1751a4d"),p(h,"type","email"),h.autofocus=n[2],p(h,"autocomplete","off"),p(h,"id",b=n[13]),h.required=y=($=n[1].options)==null?void 0:$.requireEmail,p(h,"class","svelte-1751a4d")},m($,T){w($,e,T),g(e,t),g(e,i),g(e,s),w($,o,T),w($,r,T),g(r,a),g(a,u),g(u,f),g(u,d),w($,_,T),w($,h,T),re(h,n[0].email),n[2]&&h.focus(),S||(C=[Me(He.call(null,a,{text:"Make email public or private",position:"top-right"})),J(a,"click",n[6]),J(h,"input",n[7])],S=!0)},p($,T){var M;T&8192&&l!==(l=$[13])&&p(e,"for",l),T&1&&c!==(c=$[0].emailVisibility?"On":"Off")&&se(d,c),T&1&&m!==(m="btn btn-sm btn-transparent "+($[0].emailVisibility?"btn-success":"btn-hint"))&&p(a,"class",m),T&4&&(h.autofocus=$[2]),T&8192&&b!==(b=$[13])&&p(h,"id",b),T&2&&y!==(y=(M=$[1].options)==null?void 0:M.requireEmail)&&(h.required=y),T&1&&h.value!==$[0].email&&re(h,$[0].email)},d($){$&&k(e),$&&k(o),$&&k(r),$&&k(_),$&&k(h),S=!1,Ee(C)}}}function Np(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle",name:"verified",$$slots:{default:[RM,({uniqueId:i})=>({13:i}),({uniqueId:i})=>i?8192:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,s){const l={};s&24584&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function RM(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Change password"),p(e,"type","checkbox"),p(e,"id",t=n[13]),p(s,"for",o=n[13])},m(u,f){w(u,e,f),e.checked=n[3],w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[8]),r=!0)},p(u,f){f&8192&&t!==(t=u[13])&&p(e,"id",t),f&8&&(e.checked=u[3]),f&8192&&o!==(o=u[13])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Fp(n){let e,t,i,s,l,o,r,a,u;return s=new pe({props:{class:"form-field required",name:"password",$$slots:{default:[qM,({uniqueId:f})=>({13:f}),({uniqueId:f})=>f?8192:0]},$$scope:{ctx:n}}}),r=new pe({props:{class:"form-field required",name:"passwordConfirm",$$slots:{default:[jM,({uniqueId:f})=>({13:f}),({uniqueId:f})=>f?8192:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),i=v("div"),H(s.$$.fragment),l=E(),o=v("div"),H(r.$$.fragment),p(i,"class","col-sm-6"),p(o,"class","col-sm-6"),p(t,"class","grid"),Q(t,"p-t-xs",n[3]),p(e,"class","block")},m(f,c){w(f,e,c),g(e,t),g(t,i),V(s,i,null),g(t,l),g(t,o),V(r,o,null),u=!0},p(f,c){const d={};c&24577&&(d.$$scope={dirty:c,ctx:f}),s.$set(d);const m={};c&24577&&(m.$$scope={dirty:c,ctx:f}),r.$set(m),(!u||c&8)&&Q(t,"p-t-xs",f[3])},i(f){u||(A(s.$$.fragment,f),A(r.$$.fragment,f),f&&Qe(()=>{u&&(a||(a=je(e,ot,{duration:150},!0)),a.run(1))}),u=!0)},o(f){I(s.$$.fragment,f),I(r.$$.fragment,f),f&&(a||(a=je(e,ot,{duration:150},!1)),a.run(0)),u=!1},d(f){f&&k(e),z(s),z(r),f&&a&&a.end()}}}function qM(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Password",o=E(),r=v("input"),p(t,"class","ri-lock-line"),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","password"),p(r,"autocomplete","new-password"),p(r,"id",a=n[13]),r.required=!0},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,o,d),w(c,r,d),re(r,n[0].password),u||(f=J(r,"input",n[9]),u=!0)},p(c,d){d&8192&&l!==(l=c[13])&&p(e,"for",l),d&8192&&a!==(a=c[13])&&p(r,"id",a),d&1&&r.value!==c[0].password&&re(r,c[0].password)},d(c){c&&k(e),c&&k(o),c&&k(r),u=!1,f()}}}function jM(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("label"),t=v("i"),i=E(),s=v("span"),s.textContent="Password confirm",o=E(),r=v("input"),p(t,"class","ri-lock-line"),p(s,"class","txt"),p(e,"for",l=n[13]),p(r,"type","password"),p(r,"autocomplete","new-password"),p(r,"id",a=n[13]),r.required=!0},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,o,d),w(c,r,d),re(r,n[0].passwordConfirm),u||(f=J(r,"input",n[10]),u=!0)},p(c,d){d&8192&&l!==(l=c[13])&&p(e,"for",l),d&8192&&a!==(a=c[13])&&p(r,"id",a),d&1&&r.value!==c[0].passwordConfirm&&re(r,c[0].passwordConfirm)},d(c){c&&k(e),c&&k(o),c&&k(r),u=!1,f()}}}function VM(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Verified"),p(e,"type","checkbox"),p(e,"id",t=n[13]),p(s,"for",o=n[13])},m(u,f){w(u,e,f),e.checked=n[0].verified,w(u,i,f),w(u,s,f),g(s,l),r||(a=[J(e,"change",n[11]),J(e,"change",et(n[12]))],r=!0)},p(u,f){f&8192&&t!==(t=u[13])&&p(e,"id",t),f&1&&(e.checked=u[0].verified),f&8192&&o!==(o=u[13])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,Ee(a)}}}function zM(n){var b;let e,t,i,s,l,o,r,a,u,f,c,d,m;i=new pe({props:{class:"form-field "+(n[2]?"":"required"),name:"username",$$slots:{default:[NM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field "+((b=n[1].options)!=null&&b.requireEmail?"required":""),name:"email",$$slots:{default:[FM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}});let _=!n[2]&&Np(n),h=(n[2]||n[3])&&Fp(n);return d=new pe({props:{class:"form-field form-field-toggle",name:"verified",$$slots:{default:[VM,({uniqueId:y})=>({13:y}),({uniqueId:y})=>y?8192:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),_&&_.c(),u=E(),h&&h.c(),f=E(),c=v("div"),H(d.$$.fragment),p(t,"class","col-lg-6"),p(l,"class","col-lg-6"),p(a,"class","col-lg-12"),p(c,"class","col-lg-12"),p(e,"class","grid m-b-base")},m(y,S){w(y,e,S),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),_&&_.m(a,null),g(a,u),h&&h.m(a,null),g(e,f),g(e,c),V(d,c,null),m=!0},p(y,[S]){var M;const C={};S&4&&(C.class="form-field "+(y[2]?"":"required")),S&24581&&(C.$$scope={dirty:S,ctx:y}),i.$set(C);const $={};S&2&&($.class="form-field "+((M=y[1].options)!=null&&M.requireEmail?"required":"")),S&24583&&($.$$scope={dirty:S,ctx:y}),o.$set($),y[2]?_&&(ae(),I(_,1,1,()=>{_=null}),ue()):_?(_.p(y,S),S&4&&A(_,1)):(_=Np(y),_.c(),A(_,1),_.m(a,u)),y[2]||y[3]?h?(h.p(y,S),S&12&&A(h,1)):(h=Fp(y),h.c(),A(h,1),h.m(a,null)):h&&(ae(),I(h,1,1,()=>{h=null}),ue());const T={};S&24581&&(T.$$scope={dirty:S,ctx:y}),d.$set(T)},i(y){m||(A(i.$$.fragment,y),A(o.$$.fragment,y),A(_),A(h),A(d.$$.fragment,y),m=!0)},o(y){I(i.$$.fragment,y),I(o.$$.fragment,y),I(_),I(h),I(d.$$.fragment,y),m=!1},d(y){y&&k(e),z(i),z(o),_&&_.d(),h&&h.d(),z(d)}}}function HM(n,e,t){let{collection:i=new yn}=e,{record:s=new yi}=e,{isNew:l=s.$isNew}=e,o=s.username||null,r=!1;function a(){s.username=this.value,t(0,s),t(3,r)}const u=()=>t(0,s.emailVisibility=!s.emailVisibility,s);function f(){s.email=this.value,t(0,s),t(3,r)}function c(){r=this.checked,t(3,r)}function d(){s.password=this.value,t(0,s),t(3,r)}function m(){s.passwordConfirm=this.value,t(0,s),t(3,r)}function _(){s.verified=this.checked,t(0,s),t(3,r)}const h=b=>{l||pn("Do you really want to manually change the verified account state?",()=>{},()=>{t(0,s.verified=!b.target.checked,s)})};return n.$$set=b=>{"collection"in b&&t(1,i=b.collection),"record"in b&&t(0,s=b.record),"isNew"in b&&t(2,l=b.isNew)},n.$$.update=()=>{n.$$.dirty&1&&!s.username&&s.username!==null&&t(0,s.username=null,s),n.$$.dirty&8&&(r||(t(0,s.password=null,s),t(0,s.passwordConfirm=null,s),ai("password"),ai("passwordConfirm")))},[s,i,l,r,o,a,u,f,c,d,m,_,h]}class BM extends ge{constructor(e){super(),_e(this,e,HM,zM,me,{collection:1,record:0,isNew:2})}}function UM(n){let e,t,i,s=[n[3]],l={};for(let o=0;o{r&&(t(1,r.style.height="",r),t(1,r.style.height=Math.min(r.scrollHeight,o)+"px",r))},0)}function f(m){if((m==null?void 0:m.code)==="Enter"&&!(m!=null&&m.shiftKey)&&!(m!=null&&m.isComposing)){m.preventDefault();const _=r.closest("form");_!=null&&_.requestSubmit&&_.requestSubmit()}}Gt(()=>(u(),()=>clearTimeout(a)));function c(m){te[m?"unshift":"push"](()=>{r=m,t(1,r)})}function d(){l=this.value,t(0,l)}return n.$$set=m=>{e=qe(qe({},e),Zt(m)),t(3,s=xe(e,i)),"value"in m&&t(0,l=m.value),"maxHeight"in m&&t(4,o=m.maxHeight)},n.$$.update=()=>{n.$$.dirty&1&&typeof l!==void 0&&u()},[l,r,f,s,o,c,d]}class YM extends ge{constructor(e){super(),_e(this,e,WM,UM,me,{value:0,maxHeight:4})}}function KM(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d;function m(h){n[2](h)}let _={id:n[3],required:n[1].required};return n[0]!==void 0&&(_.value=n[0]),f=new YM({props:_}),te.push(()=>de(f,"value",m)),{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),H(f.$$.fragment),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3])},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),V(f,h,b),d=!0},p(h,b){(!d||b&2&&i!==(i=B.getFieldTypeIcon(h[1].type)))&&p(t,"class",i),(!d||b&2)&&o!==(o=h[1].name+"")&&se(r,o),(!d||b&8&&a!==(a=h[3]))&&p(e,"for",a);const y={};b&8&&(y.id=h[3]),b&2&&(y.required=h[1].required),!c&&b&1&&(c=!0,y.value=h[0],he(()=>c=!1)),f.$set(y)},i(h){d||(A(f.$$.fragment,h),d=!0)},o(h){I(f.$$.fragment,h),d=!1},d(h){h&&k(e),h&&k(u),z(f,h)}}}function JM(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[KM,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function ZM(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(o){s=o,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class GM extends ge{constructor(e){super(),_e(this,e,ZM,JM,me,{field:1,value:0})}}function XM(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_,h,b;return{c(){var y,S;e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","number"),p(f,"id",c=n[3]),f.required=d=n[1].required,p(f,"min",m=(y=n[1].options)==null?void 0:y.min),p(f,"max",_=(S=n[1].options)==null?void 0:S.max),p(f,"step","any")},m(y,S){w(y,e,S),g(e,t),g(e,s),g(e,l),g(l,r),w(y,u,S),w(y,f,S),re(f,n[0]),h||(b=J(f,"input",n[2]),h=!0)},p(y,S){var C,$;S&2&&i!==(i=B.getFieldTypeIcon(y[1].type))&&p(t,"class",i),S&2&&o!==(o=y[1].name+"")&&se(r,o),S&8&&a!==(a=y[3])&&p(e,"for",a),S&8&&c!==(c=y[3])&&p(f,"id",c),S&2&&d!==(d=y[1].required)&&(f.required=d),S&2&&m!==(m=(C=y[1].options)==null?void 0:C.min)&&p(f,"min",m),S&2&&_!==(_=($=y[1].options)==null?void 0:$.max)&&p(f,"max",_),S&1&&dt(f.value)!==y[0]&&re(f,y[0])},d(y){y&&k(e),y&&k(u),y&&k(f),h=!1,b()}}}function QM(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[XM,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function xM(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=dt(this.value),t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class e5 extends ge{constructor(e){super(),_e(this,e,xM,QM,me,{field:1,value:0})}}function t5(n){let e,t,i,s,l=n[1].name+"",o,r,a,u;return{c(){e=v("input"),i=E(),s=v("label"),o=U(l),p(e,"type","checkbox"),p(e,"id",t=n[3]),p(s,"for",r=n[3])},m(f,c){w(f,e,c),e.checked=n[0],w(f,i,c),w(f,s,c),g(s,o),a||(u=J(e,"change",n[2]),a=!0)},p(f,c){c&8&&t!==(t=f[3])&&p(e,"id",t),c&1&&(e.checked=f[0]),c&2&&l!==(l=f[1].name+"")&&se(o,l),c&8&&r!==(r=f[3])&&p(s,"for",r)},d(f){f&&k(e),f&&k(i),f&&k(s),a=!1,u()}}}function n5(n){let e,t;return e=new pe({props:{class:"form-field form-field-toggle "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[t5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field form-field-toggle "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function i5(n,e,t){let{field:i=new kn}=e,{value:s=!1}=e;function l(){s=this.checked,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class s5 extends ge{constructor(e){super(),_e(this,e,i5,n5,me,{field:1,value:0})}}function l5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","email"),p(f,"id",c=n[3]),f.required=d=n[1].required},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),re(f,n[0]),m||(_=J(f,"input",n[2]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&8&&a!==(a=h[3])&&p(e,"for",a),b&8&&c!==(c=h[3])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&1&&f.value!==h[0]&&re(f,h[0])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function o5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[l5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function r5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=this.value,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class a5 extends ge{constructor(e){super(),_e(this,e,r5,o5,me,{field:1,value:0})}}function u5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("input"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[3]),p(f,"type","url"),p(f,"id",c=n[3]),f.required=d=n[1].required},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),re(f,n[0]),m||(_=J(f,"input",n[2]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&8&&a!==(a=h[3])&&p(e,"for",a),b&8&&c!==(c=h[3])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&1&&f.value!==h[0]&&re(f,h[0])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function f5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[u5,({uniqueId:i})=>({3:i}),({uniqueId:i})=>i?8:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&27&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function c5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e;function l(){s=this.value,t(0,s)}return n.$$set=o=>{"field"in o&&t(1,i=o.field),"value"in o&&t(0,s=o.value)},[s,i,l]}class d5 extends ge{constructor(e){super(),_e(this,e,c5,f5,me,{field:1,value:0})}}function Rp(n){let e,t,i,s;return{c(){e=v("div"),t=v("button"),t.innerHTML='',p(t,"type","button"),p(t,"class","link-hint clear-btn svelte-11df51y"),p(e,"class","form-field-addon")},m(l,o){w(l,e,o),g(e,t),i||(s=[Me(He.call(null,t,"Clear")),J(t,"click",n[5])],i=!0)},p:x,d(l){l&&k(e),i=!1,Ee(s)}}}function p5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_,h,b=n[0]&&!n[1].required&&Rp(n);function y($){n[6]($)}function S($){n[7]($)}let C={id:n[8],options:B.defaultFlatpickrOptions()};return n[2]!==void 0&&(C.value=n[2]),n[0]!==void 0&&(C.formattedValue=n[0]),d=new uu({props:C}),te.push(()=>de(d,"value",y)),te.push(()=>de(d,"formattedValue",S)),d.$on("close",n[3]),{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),a=U(" (UTC)"),f=E(),b&&b.c(),c=E(),H(d.$$.fragment),p(t,"class",i=ls(B.getFieldTypeIcon(n[1].type))+" svelte-11df51y"),p(l,"class","txt"),p(e,"for",u=n[8])},m($,T){w($,e,T),g(e,t),g(e,s),g(e,l),g(l,r),g(l,a),w($,f,T),b&&b.m($,T),w($,c,T),V(d,$,T),h=!0},p($,T){(!h||T&2&&i!==(i=ls(B.getFieldTypeIcon($[1].type))+" svelte-11df51y"))&&p(t,"class",i),(!h||T&2)&&o!==(o=$[1].name+"")&&se(r,o),(!h||T&256&&u!==(u=$[8]))&&p(e,"for",u),$[0]&&!$[1].required?b?b.p($,T):(b=Rp($),b.c(),b.m(c.parentNode,c)):b&&(b.d(1),b=null);const M={};T&256&&(M.id=$[8]),!m&&T&4&&(m=!0,M.value=$[2],he(()=>m=!1)),!_&&T&1&&(_=!0,M.formattedValue=$[0],he(()=>_=!1)),d.$set(M)},i($){h||(A(d.$$.fragment,$),h=!0)},o($){I(d.$$.fragment,$),h=!1},d($){$&&k(e),$&&k(f),b&&b.d($),$&&k(c),z(d,$)}}}function m5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[p5,({uniqueId:i})=>({8:i}),({uniqueId:i})=>i?256:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&775&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function h5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e,l=s;function o(c){c.detail&&c.detail.length==3&&t(0,s=c.detail[1])}function r(){t(0,s="")}const a=()=>r();function u(c){l=c,t(2,l),t(0,s)}function f(c){s=c,t(0,s)}return n.$$set=c=>{"field"in c&&t(1,i=c.field),"value"in c&&t(0,s=c.value)},n.$$.update=()=>{n.$$.dirty&1&&s&&s.length>19&&t(0,s=s.substring(0,19)),n.$$.dirty&5&&l!=s&&t(2,l=s)},[s,i,l,o,r,a,u,f]}class _5 extends ge{constructor(e){super(),_e(this,e,h5,m5,me,{field:1,value:0})}}function qp(n){let e,t,i=n[1].options.maxSelect+"",s,l;return{c(){e=v("div"),t=U("Select up to "),s=U(i),l=U(" items."),p(e,"class","help-block")},m(o,r){w(o,e,r),g(e,t),g(e,s),g(e,l)},p(o,r){r&2&&i!==(i=o[1].options.maxSelect+"")&&se(s,i)},d(o){o&&k(e)}}}function g5(n){var S,C,$,T,M,O;let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;function h(D){n[3](D)}let b={id:n[4],toggle:!n[1].required||n[2],multiple:n[2],closable:!n[2]||((S=n[0])==null?void 0:S.length)>=((C=n[1].options)==null?void 0:C.maxSelect),items:($=n[1].options)==null?void 0:$.values,searchable:((M=(T=n[1].options)==null?void 0:T.values)==null?void 0:M.length)>5};n[0]!==void 0&&(b.selected=n[0]),f=new fu({props:b}),te.push(()=>de(f,"selected",h));let y=((O=n[1].options)==null?void 0:O.maxSelect)>1&&qp(n);return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),H(f.$$.fragment),d=E(),y&&y.c(),m=ye(),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[4])},m(D,L){w(D,e,L),g(e,t),g(e,s),g(e,l),g(l,r),w(D,u,L),V(f,D,L),w(D,d,L),y&&y.m(D,L),w(D,m,L),_=!0},p(D,L){var N,F,R,q,j,Y;(!_||L&2&&i!==(i=B.getFieldTypeIcon(D[1].type)))&&p(t,"class",i),(!_||L&2)&&o!==(o=D[1].name+"")&&se(r,o),(!_||L&16&&a!==(a=D[4]))&&p(e,"for",a);const P={};L&16&&(P.id=D[4]),L&6&&(P.toggle=!D[1].required||D[2]),L&4&&(P.multiple=D[2]),L&7&&(P.closable=!D[2]||((N=D[0])==null?void 0:N.length)>=((F=D[1].options)==null?void 0:F.maxSelect)),L&2&&(P.items=(R=D[1].options)==null?void 0:R.values),L&2&&(P.searchable=((j=(q=D[1].options)==null?void 0:q.values)==null?void 0:j.length)>5),!c&&L&1&&(c=!0,P.selected=D[0],he(()=>c=!1)),f.$set(P),((Y=D[1].options)==null?void 0:Y.maxSelect)>1?y?y.p(D,L):(y=qp(D),y.c(),y.m(m.parentNode,m)):y&&(y.d(1),y=null)},i(D){_||(A(f.$$.fragment,D),_=!0)},o(D){I(f.$$.fragment,D),_=!1},d(D){D&&k(e),D&&k(u),z(f,D),D&&k(d),y&&y.d(D),D&&k(m)}}}function b5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[g5,({uniqueId:i})=>({4:i}),({uniqueId:i})=>i?16:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&55&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function v5(n,e,t){let i,{field:s=new kn}=e,{value:l=void 0}=e;function o(r){l=r,t(0,l),t(2,i),t(1,s)}return n.$$set=r=>{"field"in r&&t(1,s=r.field),"value"in r&&t(0,l=r.value)},n.$$.update=()=>{var r;n.$$.dirty&2&&t(2,i=((r=s.options)==null?void 0:r.maxSelect)>1),n.$$.dirty&5&&typeof l>"u"&&t(0,l=i?[]:""),n.$$.dirty&7&&i&&Array.isArray(l)&&l.length>s.options.maxSelect&&t(0,l=l.slice(l.length-s.options.maxSelect))},[l,s,i,o]}class y5 extends ge{constructor(e){super(),_e(this,e,v5,b5,me,{field:1,value:0})}}function k5(n){let e,t,i,s,l,o=n[1].name+"",r,a,u,f,c,d,m,_;return{c(){e=v("label"),t=v("i"),s=E(),l=v("span"),r=U(o),u=E(),f=v("textarea"),p(t,"class",i=B.getFieldTypeIcon(n[1].type)),p(l,"class","txt"),p(e,"for",a=n[4]),p(f,"id",c=n[4]),p(f,"class","txt-mono"),f.required=d=n[1].required,f.value=n[2]},m(h,b){w(h,e,b),g(e,t),g(e,s),g(e,l),g(l,r),w(h,u,b),w(h,f,b),m||(_=J(f,"input",n[3]),m=!0)},p(h,b){b&2&&i!==(i=B.getFieldTypeIcon(h[1].type))&&p(t,"class",i),b&2&&o!==(o=h[1].name+"")&&se(r,o),b&16&&a!==(a=h[4])&&p(e,"for",a),b&16&&c!==(c=h[4])&&p(f,"id",c),b&2&&d!==(d=h[1].required)&&(f.required=d),b&4&&(f.value=h[2])},d(h){h&&k(e),h&&k(u),h&&k(f),m=!1,_()}}}function w5(n){let e,t;return e=new pe({props:{class:"form-field "+(n[1].required?"required":""),name:n[1].name,$$slots:{default:[k5,({uniqueId:i})=>({4:i}),({uniqueId:i})=>i?16:0]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment)},m(i,s){V(e,i,s),t=!0},p(i,[s]){const l={};s&2&&(l.class="form-field "+(i[1].required?"required":"")),s&2&&(l.name=i[1].name),s&55&&(l.$$scope={dirty:s,ctx:i}),e.$set(l)},i(i){t||(A(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){z(e,i)}}}function S5(n,e,t){let{field:i=new kn}=e,{value:s=void 0}=e,l=JSON.stringify(typeof s>"u"?null:s,null,2);const o=r=>{t(2,l=r.target.value),t(0,s=r.target.value.trim())};return n.$$set=r=>{"field"in r&&t(1,i=r.field),"value"in r&&t(0,s=r.value)},n.$$.update=()=>{n.$$.dirty&5&&s!==(l==null?void 0:l.trim())&&(t(2,l=JSON.stringify(typeof s>"u"?null:s,null,2)),t(0,s=l))},[s,i,l,o]}class $5 extends ge{constructor(e){super(),_e(this,e,S5,w5,me,{field:1,value:0})}}function C5(n){let e,t;return{c(){e=v("i"),p(e,"class","ri-file-line"),p(e,"alt",t=n[0].name)},m(i,s){w(i,e,s)},p(i,s){s&1&&t!==(t=i[0].name)&&p(e,"alt",t)},d(i){i&&k(e)}}}function T5(n){let e,t,i;return{c(){e=v("img"),p(e,"draggable",!1),hn(e.src,t=n[2])||p(e,"src",t),p(e,"width",n[1]),p(e,"height",n[1]),p(e,"alt",i=n[0].name)},m(s,l){w(s,e,l)},p(s,l){l&4&&!hn(e.src,t=s[2])&&p(e,"src",t),l&2&&p(e,"width",s[1]),l&2&&p(e,"height",s[1]),l&1&&i!==(i=s[0].name)&&p(e,"alt",i)},d(s){s&&k(e)}}}function M5(n){let e;function t(l,o){return l[2]?T5:C5}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,[o]){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},i:x,o:x,d(l){s.d(l),l&&k(e)}}}function O5(n,e,t){let i,{file:s}=e,{size:l=50}=e;function o(){B.hasImageExtension(s==null?void 0:s.name)?B.generateThumb(s,l,l).then(r=>{t(2,i=r)}).catch(r=>{t(2,i=""),console.warn("Unable to generate thumb: ",r)}):t(2,i="")}return n.$$set=r=>{"file"in r&&t(0,s=r.file),"size"in r&&t(1,l=r.size)},n.$$.update=()=>{n.$$.dirty&1&&typeof s<"u"&&o()},t(2,i=""),[s,l,i]}class E5 extends ge{constructor(e){super(),_e(this,e,O5,M5,me,{file:0,size:1})}}function jp(n){let e;function t(l,o){return l[4]==="image"?A5:D5}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,o){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},d(l){s.d(l),l&&k(e)}}}function D5(n){let e,t;return{c(){e=v("object"),t=U("Cannot preview the file."),p(e,"title",n[2]),p(e,"data",n[1])},m(i,s){w(i,e,s),g(e,t)},p(i,s){s&4&&p(e,"title",i[2]),s&2&&p(e,"data",i[1])},d(i){i&&k(e)}}}function A5(n){let e,t,i;return{c(){e=v("img"),hn(e.src,t=n[1])||p(e,"src",t),p(e,"alt",i="Preview "+n[2])},m(s,l){w(s,e,l)},p(s,l){l&2&&!hn(e.src,t=s[1])&&p(e,"src",t),l&4&&i!==(i="Preview "+s[2])&&p(e,"alt",i)},d(s){s&&k(e)}}}function I5(n){var s;let e=(s=n[3])==null?void 0:s.isActive(),t,i=e&&jp(n);return{c(){i&&i.c(),t=ye()},m(l,o){i&&i.m(l,o),w(l,t,o)},p(l,o){var r;o&8&&(e=(r=l[3])==null?void 0:r.isActive()),e?i?i.p(l,o):(i=jp(l),i.c(),i.m(t.parentNode,t)):i&&(i.d(1),i=null)},d(l){i&&i.d(l),l&&k(t)}}}function L5(n){let e,t,i;return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","overlay-close")},m(s,l){w(s,e,l),t||(i=J(e,"click",et(n[0])),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function P5(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("a"),t=U(n[2]),i=E(),s=v("i"),l=E(),o=v("div"),r=E(),a=v("button"),a.textContent="Close",p(s,"class","ri-external-link-line"),p(e,"href",n[1]),p(e,"title",n[2]),p(e,"target","_blank"),p(e,"rel","noreferrer noopener"),p(e,"class","link-hint txt-ellipsis inline-flex"),p(o,"class","flex-fill"),p(a,"type","button"),p(a,"class","btn btn-transparent")},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),w(c,l,d),w(c,o,d),w(c,r,d),w(c,a,d),u||(f=J(a,"click",n[0]),u=!0)},p(c,d){d&4&&se(t,c[2]),d&2&&p(e,"href",c[1]),d&4&&p(e,"title",c[2])},d(c){c&&k(e),c&&k(l),c&&k(o),c&&k(r),c&&k(a),u=!1,f()}}}function N5(n){let e,t,i={class:"preview preview-"+n[4],btnClose:!1,popup:!0,$$slots:{footer:[P5],header:[L5],default:[I5]},$$scope:{ctx:n}};return e=new ln({props:i}),n[7](e),e.$on("show",n[8]),e.$on("hide",n[9]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&16&&(o.class="preview preview-"+s[4]),l&1054&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[7](null),z(e,s)}}}function F5(n,e,t){let i,s,l,o,r="";function a(m){m!==""&&(t(1,r=m),o==null||o.show())}function u(){return o==null?void 0:o.hide()}function f(m){te[m?"unshift":"push"](()=>{o=m,t(3,o)})}function c(m){Ne.call(this,n,m)}function d(m){Ne.call(this,n,m)}return n.$$.update=()=>{n.$$.dirty&2&&t(6,i=r.indexOf("?")),n.$$.dirty&66&&t(2,s=r.substring(r.lastIndexOf("/")+1,i>0?i:void 0)),n.$$.dirty&4&&t(4,l=B.getFileType(s))},[u,r,s,o,l,a,i,f,c,d]}class R5 extends ge{constructor(e){super(),_e(this,e,F5,N5,me,{show:5,hide:0})}get show(){return this.$$.ctx[5]}get hide(){return this.$$.ctx[0]}}function q5(n){let e,t,i,s,l;function o(u,f){return u[3]==="image"?H5:u[3]==="video"||u[3]==="audio"?z5:V5}let r=o(n),a=r(n);return{c(){e=v("a"),a.c(),p(e,"draggable",!1),p(e,"class",t="thumb "+(n[1]?`thumb-${n[1]}`:"")),p(e,"href",n[6]),p(e,"target","_blank"),p(e,"rel","noreferrer"),p(e,"title",i=(n[7]?"Preview":"Download")+" "+n[0])},m(u,f){w(u,e,f),a.m(e,null),s||(l=J(e,"click",An(n[11])),s=!0)},p(u,f){r===(r=o(u))&&a?a.p(u,f):(a.d(1),a=r(u),a&&(a.c(),a.m(e,null))),f&2&&t!==(t="thumb "+(u[1]?`thumb-${u[1]}`:""))&&p(e,"class",t),f&64&&p(e,"href",u[6]),f&129&&i!==(i=(u[7]?"Preview":"Download")+" "+u[0])&&p(e,"title",i)},d(u){u&&k(e),a.d(),s=!1,l()}}}function j5(n){let e,t;return{c(){e=v("div"),p(e,"class",t="thumb "+(n[1]?`thumb-${n[1]}`:""))},m(i,s){w(i,e,s)},p(i,s){s&2&&t!==(t="thumb "+(i[1]?`thumb-${i[1]}`:""))&&p(e,"class",t)},d(i){i&&k(e)}}}function V5(n){let e;return{c(){e=v("i"),p(e,"class","ri-file-3-line")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function z5(n){let e;return{c(){e=v("i"),p(e,"class","ri-video-line")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function H5(n){let e,t,i,s,l;return{c(){e=v("img"),p(e,"draggable",!1),hn(e.src,t=n[5])||p(e,"src",t),p(e,"alt",n[0]),p(e,"title",i="Preview "+n[0])},m(o,r){w(o,e,r),s||(l=J(e,"error",n[8]),s=!0)},p(o,r){r&32&&!hn(e.src,t=o[5])&&p(e,"src",t),r&1&&p(e,"alt",o[0]),r&1&&i!==(i="Preview "+o[0])&&p(e,"title",i)},d(o){o&&k(e),s=!1,l()}}}function B5(n){let e,t,i;function s(a,u){return a[2]?j5:q5}let l=s(n),o=l(n),r={};return t=new R5({props:r}),n[12](t),{c(){o.c(),e=E(),H(t.$$.fragment)},m(a,u){o.m(a,u),w(a,e,u),V(t,a,u),i=!0},p(a,[u]){l===(l=s(a))&&o?o.p(a,u):(o.d(1),o=l(a),o&&(o.c(),o.m(e.parentNode,e)));const f={};t.$set(f)},i(a){i||(A(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){o.d(a),a&&k(e),n[12](null),z(t,a)}}}function U5(n,e,t){let i,s,{record:l=null}=e,{filename:o=""}=e,{size:r=""}=e,a,u="",f="",c="",d=!1;m();async function m(){t(2,d=!0);try{t(10,c=await ce.getAdminFileToken(l.collectionId))}catch(y){console.warn("File token failure:",y)}t(2,d=!1)}function _(){t(5,u="")}const h=y=>{s&&(y.preventDefault(),a==null||a.show(f))};function b(y){te[y?"unshift":"push"](()=>{a=y,t(4,a)})}return n.$$set=y=>{"record"in y&&t(9,l=y.record),"filename"in y&&t(0,o=y.filename),"size"in y&&t(1,r=y.size)},n.$$.update=()=>{n.$$.dirty&1&&t(3,i=B.getFileType(o)),n.$$.dirty&9&&t(7,s=["image","audio","video"].includes(i)||o.endsWith(".pdf")),n.$$.dirty&1541&&t(6,f=d?"":ce.files.getUrl(l,o,{token:c})),n.$$.dirty&1541&&t(5,u=d?"":ce.files.getUrl(l,o,{thumb:"100x100",token:c}))},[o,r,d,i,a,u,f,s,_,l,c,h,b]}class du extends ge{constructor(e){super(),_e(this,e,U5,B5,me,{record:9,filename:0,size:1})}}function Vp(n,e,t){const i=n.slice();return i[29]=e[t],i[31]=t,i}function zp(n,e,t){const i=n.slice();i[34]=e[t],i[31]=t;const s=i[2].includes(i[34]);return i[35]=s,i}function W5(n){let e,t,i;function s(){return n[17](n[34])}return{c(){e=v("button"),e.innerHTML='',p(e,"type","button"),p(e,"class","btn btn-transparent btn-hint btn-sm btn-circle btn-remove")},m(l,o){w(l,e,o),t||(i=[Me(He.call(null,e,"Remove file")),J(e,"click",s)],t=!0)},p(l,o){n=l},d(l){l&&k(e),t=!1,Ee(i)}}}function Y5(n){let e,t,i;function s(){return n[16](n[34])}return{c(){e=v("button"),e.innerHTML='Restore',p(e,"type","button"),p(e,"class","btn btn-sm btn-danger btn-transparent")},m(l,o){w(l,e,o),t||(i=J(e,"click",s),t=!0)},p(l,o){n=l},d(l){l&&k(e),t=!1,i()}}}function K5(n){let e,t,i,s,l,o,r=n[34]+"",a,u,f,c,d,m;i=new du({props:{record:n[3],filename:n[34]}});function _(y,S){return y[35]?Y5:W5}let h=_(n),b=h(n);return{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),o=v("a"),a=U(r),c=E(),d=v("div"),b.c(),Q(t,"fade",n[35]),p(o,"draggable",!1),p(o,"href",u=ce.files.getUrl(n[3],n[34],{token:n[10]})),p(o,"class",f="txt-ellipsis "+(n[35]?"txt-strikethrough txt-hint":"link-primary")),p(o,"title","Download"),p(o,"target","_blank"),p(o,"rel","noopener noreferrer"),p(l,"class","content"),p(d,"class","actions"),p(e,"class","list-item"),Q(e,"dragging",n[32]),Q(e,"dragover",n[33])},m(y,S){w(y,e,S),g(e,t),V(i,t,null),g(e,s),g(e,l),g(l,o),g(o,a),g(e,c),g(e,d),b.m(d,null),m=!0},p(y,S){const C={};S[0]&8&&(C.record=y[3]),S[0]&32&&(C.filename=y[34]),i.$set(C),(!m||S[0]&36)&&Q(t,"fade",y[35]),(!m||S[0]&32)&&r!==(r=y[34]+"")&&se(a,r),(!m||S[0]&1064&&u!==(u=ce.files.getUrl(y[3],y[34],{token:y[10]})))&&p(o,"href",u),(!m||S[0]&36&&f!==(f="txt-ellipsis "+(y[35]?"txt-strikethrough txt-hint":"link-primary")))&&p(o,"class",f),h===(h=_(y))&&b?b.p(y,S):(b.d(1),b=h(y),b&&(b.c(),b.m(d,null))),(!m||S[1]&2)&&Q(e,"dragging",y[32]),(!m||S[1]&4)&&Q(e,"dragover",y[33])},i(y){m||(A(i.$$.fragment,y),m=!0)},o(y){I(i.$$.fragment,y),m=!1},d(y){y&&k(e),z(i),b.d()}}}function Hp(n,e){let t,i,s,l;function o(a){e[18](a)}let r={group:e[4].name+"_uploaded",index:e[31],disabled:!e[6],$$slots:{default:[K5,({dragging:a,dragover:u})=>({32:a,33:u}),({dragging:a,dragover:u})=>[0,(a?2:0)|(u?4:0)]]},$$scope:{ctx:e}};return e[0]!==void 0&&(r.list=e[0]),i=new Nl({props:r}),te.push(()=>de(i,"list",o)),{key:n,first:null,c(){t=ye(),H(i.$$.fragment),this.first=t},m(a,u){w(a,t,u),V(i,a,u),l=!0},p(a,u){e=a;const f={};u[0]&16&&(f.group=e[4].name+"_uploaded"),u[0]&32&&(f.index=e[31]),u[0]&64&&(f.disabled=!e[6]),u[0]&1068|u[1]&70&&(f.$$scope={dirty:u,ctx:e}),!s&&u[0]&1&&(s=!0,f.list=e[0],he(()=>s=!1)),i.$set(f)},i(a){l||(A(i.$$.fragment,a),l=!0)},o(a){I(i.$$.fragment,a),l=!1},d(a){a&&k(t),z(i,a)}}}function J5(n){let e,t,i,s,l,o,r,a,u=n[29].name+"",f,c,d,m,_,h,b;i=new E5({props:{file:n[29]}});function y(){return n[19](n[31])}return{c(){e=v("div"),t=v("figure"),H(i.$$.fragment),s=E(),l=v("div"),o=v("small"),o.textContent="New",r=E(),a=v("span"),f=U(u),d=E(),m=v("button"),m.innerHTML='',p(t,"class","thumb"),p(o,"class","label label-success m-r-5"),p(a,"class","txt"),p(l,"class","filename m-r-auto"),p(l,"title",c=n[29].name),p(m,"type","button"),p(m,"class","btn btn-transparent btn-hint btn-sm btn-circle btn-remove"),p(e,"class","list-item"),Q(e,"dragging",n[32]),Q(e,"dragover",n[33])},m(S,C){w(S,e,C),g(e,t),V(i,t,null),g(e,s),g(e,l),g(l,o),g(l,r),g(l,a),g(a,f),g(e,d),g(e,m),_=!0,h||(b=[Me(He.call(null,m,"Remove file")),J(m,"click",y)],h=!0)},p(S,C){n=S;const $={};C[0]&2&&($.file=n[29]),i.$set($),(!_||C[0]&2)&&u!==(u=n[29].name+"")&&se(f,u),(!_||C[0]&2&&c!==(c=n[29].name))&&p(l,"title",c),(!_||C[1]&2)&&Q(e,"dragging",n[32]),(!_||C[1]&4)&&Q(e,"dragover",n[33])},i(S){_||(A(i.$$.fragment,S),_=!0)},o(S){I(i.$$.fragment,S),_=!1},d(S){S&&k(e),z(i),h=!1,Ee(b)}}}function Bp(n,e){let t,i,s,l;function o(a){e[20](a)}let r={group:e[4].name+"_new",index:e[31],disabled:!e[6],$$slots:{default:[J5,({dragging:a,dragover:u})=>({32:a,33:u}),({dragging:a,dragover:u})=>[0,(a?2:0)|(u?4:0)]]},$$scope:{ctx:e}};return e[1]!==void 0&&(r.list=e[1]),i=new Nl({props:r}),te.push(()=>de(i,"list",o)),{key:n,first:null,c(){t=ye(),H(i.$$.fragment),this.first=t},m(a,u){w(a,t,u),V(i,a,u),l=!0},p(a,u){e=a;const f={};u[0]&16&&(f.group=e[4].name+"_new"),u[0]&2&&(f.index=e[31]),u[0]&64&&(f.disabled=!e[6]),u[0]&2|u[1]&70&&(f.$$scope={dirty:u,ctx:e}),!s&&u[0]&2&&(s=!0,f.list=e[1],he(()=>s=!1)),i.$set(f)},i(a){l||(A(i.$$.fragment,a),l=!0)},o(a){I(i.$$.fragment,a),l=!1},d(a){a&&k(t),z(i,a)}}}function Z5(n){let e,t,i,s,l,o=n[4].name+"",r,a,u,f,c=[],d=new Map,m,_=[],h=new Map,b,y,S,C,$,T,M,O,D,L,P,N,F=n[5];const R=Y=>Y[34]+Y[3].id;for(let Y=0;YY[29].name+Y[31];for(let Y=0;Y{M[P]=null}),ue(),o=M[l],o?o.p(D,L):(o=M[l]=T[l](D),o.c()),A(o,1),o.m(r.parentNode,r))},i(D){S||(A(o),S=!0)},o(D){I(o),S=!1},d(D){D&&k(e),D&&k(s),M[l].d(D),D&&k(r),D&&k(a),C=!1,Ee($)}}}function qD(n){let e,t,i,s,l,o;return e=new pe({props:{class:"form-field required",name:n[1]+".subject",$$slots:{default:[LD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),i=new pe({props:{class:"form-field required",name:n[1]+".actionUrl",$$slots:{default:[PD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),l=new pe({props:{class:"form-field m-0 required",name:n[1]+".body",$$slots:{default:[RD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment),s=E(),H(l.$$.fragment)},m(r,a){V(e,r,a),w(r,t,a),V(i,r,a),w(r,s,a),V(l,r,a),o=!0},p(r,a){const u={};a[0]&2&&(u.name=r[1]+".subject"),a[0]&1|a[1]&3&&(u.$$scope={dirty:a,ctx:r}),e.$set(u);const f={};a[0]&2&&(f.name=r[1]+".actionUrl"),a[0]&1|a[1]&3&&(f.$$scope={dirty:a,ctx:r}),i.$set(f);const c={};a[0]&2&&(c.name=r[1]+".body"),a[0]&49|a[1]&3&&(c.$$scope={dirty:a,ctx:r}),l.$set(c)},i(r){o||(A(e.$$.fragment,r),A(i.$$.fragment,r),A(l.$$.fragment,r),o=!0)},o(r){I(e.$$.fragment,r),I(i.$$.fragment,r),I(l.$$.fragment,r),o=!1},d(r){z(e,r),r&&k(t),z(i,r),r&&k(s),z(l,r)}}}function Lh(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,{text:"Has errors",position:"left"})),s=!0)},i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function jD(n){let e,t,i,s,l,o,r,a,u,f=n[6]&&Lh();return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),l=U(n[2]),o=E(),r=v("div"),a=E(),f&&f.c(),u=ye(),p(t,"class","ri-draft-line"),p(s,"class","txt"),p(e,"class","inline-flex"),p(r,"class","flex-fill")},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),g(s,l),w(c,o,d),w(c,r,d),w(c,a,d),f&&f.m(c,d),w(c,u,d)},p(c,d){d[0]&4&&se(l,c[2]),c[6]?f?d[0]&64&&A(f,1):(f=Lh(),f.c(),A(f,1),f.m(u.parentNode,u)):f&&(ae(),I(f,1,1,()=>{f=null}),ue())},d(c){c&&k(e),c&&k(o),c&&k(r),c&&k(a),f&&f.d(c),c&&k(u)}}}function VD(n){let e,t;const i=[n[8]];let s={$$slots:{header:[jD],default:[qD]},$$scope:{ctx:n}};for(let l=0;lt(12,o=W));let{key:r}=e,{title:a}=e,{config:u={}}=e,f,c=Ph,d=!1;function m(){f==null||f.expand()}function _(){f==null||f.collapse()}function h(){f==null||f.collapseSiblings()}async function b(){c||d||(t(5,d=!0),t(4,c=(await at(()=>import("./CodeEditor-95986a37.js"),["./CodeEditor-95986a37.js","./index-fd4289fb.js"],import.meta.url)).default),Ph=c,t(5,d=!1))}function y(W){B.copyToClipboard(W),ko(`Copied ${W} to clipboard`,2e3)}b();function S(){u.subject=this.value,t(0,u)}const C=()=>y("{APP_NAME}"),$=()=>y("{APP_URL}");function T(){u.actionUrl=this.value,t(0,u)}const M=()=>y("{APP_NAME}"),O=()=>y("{APP_URL}"),D=()=>y("{TOKEN}");function L(W){n.$$.not_equal(u.body,W)&&(u.body=W,t(0,u))}function P(){u.body=this.value,t(0,u)}const N=()=>y("{APP_NAME}"),F=()=>y("{APP_URL}"),R=()=>y("{TOKEN}"),q=()=>y("{ACTION_URL}");function j(W){te[W?"unshift":"push"](()=>{f=W,t(3,f)})}function Y(W){Ne.call(this,n,W)}function X(W){Ne.call(this,n,W)}function G(W){Ne.call(this,n,W)}return n.$$set=W=>{e=qe(qe({},e),Zt(W)),t(8,l=xe(e,s)),"key"in W&&t(1,r=W.key),"title"in W&&t(2,a=W.title),"config"in W&&t(0,u=W.config)},n.$$.update=()=>{n.$$.dirty[0]&4098&&t(6,i=!B.isEmpty(B.getNestedVal(o,r))),n.$$.dirty[0]&3&&(u.enabled||ai(r))},[u,r,a,f,c,d,i,y,l,m,_,h,o,S,C,$,T,M,O,D,L,P,N,F,R,q,j,Y,X,G]}class qr extends ge{constructor(e){super(),_e(this,e,zD,VD,me,{key:1,title:2,config:0,expand:9,collapse:10,collapseSiblings:11},null,[-1,-1])}get expand(){return this.$$.ctx[9]}get collapse(){return this.$$.ctx[10]}get collapseSiblings(){return this.$$.ctx[11]}}function Nh(n,e,t){const i=n.slice();return i[21]=e[t],i}function Fh(n,e){let t,i,s,l,o,r=e[21].label+"",a,u,f,c,d,m;return c=Y1(e[11][0]),{key:n,first:null,c(){t=v("div"),i=v("input"),l=E(),o=v("label"),a=U(r),f=E(),p(i,"type","radio"),p(i,"name","template"),p(i,"id",s=e[20]+e[21].value),i.__value=e[21].value,i.value=i.__value,p(o,"for",u=e[20]+e[21].value),p(t,"class","form-field-block"),c.p(i),this.first=t},m(_,h){w(_,t,h),g(t,i),i.checked=i.__value===e[2],g(t,l),g(t,o),g(o,a),g(t,f),d||(m=J(i,"change",e[10]),d=!0)},p(_,h){e=_,h&1048576&&s!==(s=e[20]+e[21].value)&&p(i,"id",s),h&4&&(i.checked=i.__value===e[2]),h&1048576&&u!==(u=e[20]+e[21].value)&&p(o,"for",u)},d(_){_&&k(t),c.r(),d=!1,m()}}}function HD(n){let e=[],t=new Map,i,s=n[7];const l=o=>o[21].value;for(let o=0;o({20:a}),({uniqueId:a})=>a?1048576:0]},$$scope:{ctx:n}}}),s=new pe({props:{class:"form-field required m-0",name:"email",$$slots:{default:[BD,({uniqueId:a})=>({20:a}),({uniqueId:a})=>a?1048576:0]},$$scope:{ctx:n}}}),{c(){e=v("form"),H(t.$$.fragment),i=E(),H(s.$$.fragment),p(e,"id",n[6]),p(e,"autocomplete","off")},m(a,u){w(a,e,u),V(t,e,null),g(e,i),V(s,e,null),l=!0,o||(r=J(e,"submit",et(n[13])),o=!0)},p(a,u){const f={};u&17825796&&(f.$$scope={dirty:u,ctx:a}),t.$set(f);const c={};u&17825794&&(c.$$scope={dirty:u,ctx:a}),s.$set(c)},i(a){l||(A(t.$$.fragment,a),A(s.$$.fragment,a),l=!0)},o(a){I(t.$$.fragment,a),I(s.$$.fragment,a),l=!1},d(a){a&&k(e),z(t),z(s),o=!1,r()}}}function WD(n){let e;return{c(){e=v("h4"),e.textContent="Send test email",p(e,"class","center txt-break")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function YD(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("button"),t=U("Close"),i=E(),s=v("button"),l=v("i"),o=E(),r=v("span"),r.textContent="Send",p(e,"type","button"),p(e,"class","btn btn-transparent"),e.disabled=n[4],p(l,"class","ri-mail-send-line"),p(r,"class","txt"),p(s,"type","submit"),p(s,"form",n[6]),p(s,"class","btn btn-expanded"),s.disabled=a=!n[5]||n[4],Q(s,"btn-loading",n[4])},m(c,d){w(c,e,d),g(e,t),w(c,i,d),w(c,s,d),g(s,l),g(s,o),g(s,r),u||(f=J(e,"click",n[0]),u=!0)},p(c,d){d&16&&(e.disabled=c[4]),d&48&&a!==(a=!c[5]||c[4])&&(s.disabled=a),d&16&&Q(s,"btn-loading",c[4])},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,f()}}}function KD(n){let e,t,i={class:"overlay-panel-sm email-test-popup",overlayClose:!n[4],escClose:!n[4],beforeHide:n[14],popup:!0,$$slots:{footer:[YD],header:[WD],default:[UD]},$$scope:{ctx:n}};return e=new ln({props:i}),n[15](e),e.$on("show",n[16]),e.$on("hide",n[17]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&16&&(o.overlayClose=!s[4]),l&16&&(o.escClose=!s[4]),l&16&&(o.beforeHide=s[14]),l&16777270&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[15](null),z(e,s)}}}const jr="last_email_test",Rh="email_test_request";function JD(n,e,t){let i;const s=$t(),l="email_test_"+B.randomString(5),o=[{label:'"Verification" template',value:"verification"},{label:'"Password reset" template',value:"password-reset"},{label:'"Confirm email change" template',value:"email-change"}];let r,a=localStorage.getItem(jr),u=o[0].value,f=!1,c=null;function d(O="",D=""){t(1,a=O||localStorage.getItem(jr)),t(2,u=D||o[0].value),en({}),r==null||r.show()}function m(){return clearTimeout(c),r==null?void 0:r.hide()}async function _(){if(!(!i||f)){t(4,f=!0),localStorage==null||localStorage.setItem(jr,a),clearTimeout(c),c=setTimeout(()=>{ce.cancelRequest(Rh),Ds("Test email send timeout.")},3e4);try{await ce.settings.testEmail(a,u,{$cancelKey:Rh}),zt("Successfully sent test email."),s("submit"),t(4,f=!1),await fn(),m()}catch(O){t(4,f=!1),ce.error(O)}clearTimeout(c)}}const h=[[]];function b(){u=this.__value,t(2,u)}function y(){a=this.value,t(1,a)}const S=()=>_(),C=()=>!f;function $(O){te[O?"unshift":"push"](()=>{r=O,t(3,r)})}function T(O){Ne.call(this,n,O)}function M(O){Ne.call(this,n,O)}return n.$$.update=()=>{n.$$.dirty&6&&t(5,i=!!a&&!!u)},[m,a,u,r,f,i,l,o,_,d,b,h,y,S,C,$,T,M]}class ZD extends ge{constructor(e){super(),_e(this,e,JD,KD,me,{show:9,hide:0})}get show(){return this.$$.ctx[9]}get hide(){return this.$$.ctx[0]}}function GD(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L,P;i=new pe({props:{class:"form-field required",name:"meta.senderName",$$slots:{default:[QD,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:"meta.senderAddress",$$slots:{default:[xD,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}});function N(ee){n[14](ee)}let F={single:!0,key:"meta.verificationTemplate",title:'Default "Verification" email template'};n[0].meta.verificationTemplate!==void 0&&(F.config=n[0].meta.verificationTemplate),u=new qr({props:F}),te.push(()=>de(u,"config",N));function R(ee){n[15](ee)}let q={single:!0,key:"meta.resetPasswordTemplate",title:'Default "Password reset" email template'};n[0].meta.resetPasswordTemplate!==void 0&&(q.config=n[0].meta.resetPasswordTemplate),d=new qr({props:q}),te.push(()=>de(d,"config",R));function j(ee){n[16](ee)}let Y={single:!0,key:"meta.confirmEmailChangeTemplate",title:'Default "Confirm email change" email template'};n[0].meta.confirmEmailChangeTemplate!==void 0&&(Y.config=n[0].meta.confirmEmailChangeTemplate),h=new qr({props:Y}),te.push(()=>de(h,"config",j)),$=new pe({props:{class:"form-field form-field-toggle m-b-sm",$$slots:{default:[eA,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}});let X=n[0].smtp.enabled&&qh(n);function G(ee,ie){return ee[4]?aA:rA}let W=G(n),le=W(n);return{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),c=E(),H(d.$$.fragment),_=E(),H(h.$$.fragment),y=E(),S=v("hr"),C=E(),H($.$$.fragment),T=E(),X&&X.c(),M=E(),O=v("div"),D=v("div"),L=E(),le.c(),p(t,"class","col-lg-6"),p(l,"class","col-lg-6"),p(e,"class","grid m-b-base"),p(a,"class","accordions"),p(D,"class","flex-fill"),p(O,"class","flex")},m(ee,ie){w(ee,e,ie),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),w(ee,r,ie),w(ee,a,ie),V(u,a,null),g(a,c),V(d,a,null),g(a,_),V(h,a,null),w(ee,y,ie),w(ee,S,ie),w(ee,C,ie),V($,ee,ie),w(ee,T,ie),X&&X.m(ee,ie),w(ee,M,ie),w(ee,O,ie),g(O,D),g(O,L),le.m(O,null),P=!0},p(ee,ie){const be={};ie[0]&1|ie[1]&3&&(be.$$scope={dirty:ie,ctx:ee}),i.$set(be);const Se={};ie[0]&1|ie[1]&3&&(Se.$$scope={dirty:ie,ctx:ee}),o.$set(Se);const Ve={};!f&&ie[0]&1&&(f=!0,Ve.config=ee[0].meta.verificationTemplate,he(()=>f=!1)),u.$set(Ve);const Be={};!m&&ie[0]&1&&(m=!0,Be.config=ee[0].meta.resetPasswordTemplate,he(()=>m=!1)),d.$set(Be);const ke={};!b&&ie[0]&1&&(b=!0,ke.config=ee[0].meta.confirmEmailChangeTemplate,he(()=>b=!1)),h.$set(ke);const Te={};ie[0]&1|ie[1]&3&&(Te.$$scope={dirty:ie,ctx:ee}),$.$set(Te),ee[0].smtp.enabled?X?(X.p(ee,ie),ie[0]&1&&A(X,1)):(X=qh(ee),X.c(),A(X,1),X.m(M.parentNode,M)):X&&(ae(),I(X,1,1,()=>{X=null}),ue()),W===(W=G(ee))&&le?le.p(ee,ie):(le.d(1),le=W(ee),le&&(le.c(),le.m(O,null)))},i(ee){P||(A(i.$$.fragment,ee),A(o.$$.fragment,ee),A(u.$$.fragment,ee),A(d.$$.fragment,ee),A(h.$$.fragment,ee),A($.$$.fragment,ee),A(X),P=!0)},o(ee){I(i.$$.fragment,ee),I(o.$$.fragment,ee),I(u.$$.fragment,ee),I(d.$$.fragment,ee),I(h.$$.fragment,ee),I($.$$.fragment,ee),I(X),P=!1},d(ee){ee&&k(e),z(i),z(o),ee&&k(r),ee&&k(a),z(u),z(d),z(h),ee&&k(y),ee&&k(S),ee&&k(C),z($,ee),ee&&k(T),X&&X.d(ee),ee&&k(M),ee&&k(O),le.d()}}}function XD(n){let e;return{c(){e=v("div"),p(e,"class","loader")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function QD(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Sender name"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].meta.senderName),r||(a=J(l,"input",n[12]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].meta.senderName&&re(l,u[0].meta.senderName)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function xD(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Sender address"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","email"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].meta.senderAddress),r||(a=J(l,"input",n[13]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].meta.senderAddress&&re(l,u[0].meta.senderAddress)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function eA(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("input"),i=E(),s=v("label"),l=v("span"),l.innerHTML="Use SMTP mail server (recommended)",o=E(),r=v("i"),p(e,"type","checkbox"),p(e,"id",t=n[31]),e.required=!0,p(l,"class","txt"),p(r,"class","ri-information-line link-hint"),p(s,"for",a=n[31])},m(c,d){w(c,e,d),e.checked=n[0].smtp.enabled,w(c,i,d),w(c,s,d),g(s,l),g(s,o),g(s,r),u||(f=[J(e,"change",n[17]),Me(He.call(null,r,{text:'By default PocketBase uses the unix "sendmail" command for sending emails. For better emails deliverability it is recommended to use a SMTP mail server.',position:"top"}))],u=!0)},p(c,d){d[1]&1&&t!==(t=c[31])&&p(e,"id",t),d[0]&1&&(e.checked=c[0].smtp.enabled),d[1]&1&&a!==(a=c[31])&&p(s,"for",a)},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,Ee(f)}}}function qh(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M;return i=new pe({props:{class:"form-field required",name:"smtp.host",$$slots:{default:[tA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:"smtp.port",$$slots:{default:[nA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),u=new pe({props:{class:"form-field required",name:"smtp.tls",$$slots:{default:[iA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),d=new pe({props:{class:"form-field",name:"smtp.authMethod",$$slots:{default:[sA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),h=new pe({props:{class:"form-field",name:"smtp.username",$$slots:{default:[lA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),S=new pe({props:{class:"form-field",name:"smtp.password",$$slots:{default:[oA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),f=E(),c=v("div"),H(d.$$.fragment),m=E(),_=v("div"),H(h.$$.fragment),b=E(),y=v("div"),H(S.$$.fragment),C=E(),$=v("div"),p(t,"class","col-lg-4"),p(l,"class","col-lg-2"),p(a,"class","col-lg-3"),p(c,"class","col-lg-3"),p(_,"class","col-lg-6"),p(y,"class","col-lg-6"),p($,"class","col-lg-12"),p(e,"class","grid")},m(O,D){w(O,e,D),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),V(u,a,null),g(e,f),g(e,c),V(d,c,null),g(e,m),g(e,_),V(h,_,null),g(e,b),g(e,y),V(S,y,null),g(e,C),g(e,$),M=!0},p(O,D){const L={};D[0]&1|D[1]&3&&(L.$$scope={dirty:D,ctx:O}),i.$set(L);const P={};D[0]&1|D[1]&3&&(P.$$scope={dirty:D,ctx:O}),o.$set(P);const N={};D[0]&1|D[1]&3&&(N.$$scope={dirty:D,ctx:O}),u.$set(N);const F={};D[0]&1|D[1]&3&&(F.$$scope={dirty:D,ctx:O}),d.$set(F);const R={};D[0]&1|D[1]&3&&(R.$$scope={dirty:D,ctx:O}),h.$set(R);const q={};D[0]&1|D[1]&3&&(q.$$scope={dirty:D,ctx:O}),S.$set(q)},i(O){M||(A(i.$$.fragment,O),A(o.$$.fragment,O),A(u.$$.fragment,O),A(d.$$.fragment,O),A(h.$$.fragment,O),A(S.$$.fragment,O),O&&Qe(()=>{M&&(T||(T=je(e,ot,{duration:150},!0)),T.run(1))}),M=!0)},o(O){I(i.$$.fragment,O),I(o.$$.fragment,O),I(u.$$.fragment,O),I(d.$$.fragment,O),I(h.$$.fragment,O),I(S.$$.fragment,O),O&&(T||(T=je(e,ot,{duration:150},!1)),T.run(0)),M=!1},d(O){O&&k(e),z(i),z(o),z(u),z(d),z(h),z(S),O&&T&&T.end()}}}function tA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("SMTP server host"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.host),r||(a=J(l,"input",n[18]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].smtp.host&&re(l,u[0].smtp.host)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function nA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Port"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","number"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.port),r||(a=J(l,"input",n[19]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&dt(l.value)!==u[0].smtp.port&&re(l,u[0].smtp.port)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function iA(n){let e,t,i,s,l,o,r;function a(f){n[20](f)}let u={id:n[31],items:n[6]};return n[0].smtp.tls!==void 0&&(u.keyOfSelected=n[0].smtp.tls),l=new Hi({props:u}),te.push(()=>de(l,"keyOfSelected",a)),{c(){e=v("label"),t=U("TLS encryption"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.keyOfSelected=f[0].smtp.tls,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function sA(n){let e,t,i,s,l,o,r;function a(f){n[21](f)}let u={id:n[31],items:n[7]};return n[0].smtp.authMethod!==void 0&&(u.keyOfSelected=n[0].smtp.authMethod),l=new Hi({props:u}),te.push(()=>de(l,"keyOfSelected",a)),{c(){e=v("label"),t=U("AUTH method"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.keyOfSelected=f[0].smtp.authMethod,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function lA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Username"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31])},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.username),r||(a=J(l,"input",n[22]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].smtp.username&&re(l,u[0].smtp.username)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function oA(n){let e,t,i,s,l,o,r;function a(f){n[23](f)}let u={id:n[31]};return n[0].smtp.password!==void 0&&(u.value=n[0].smtp.password),l=new mu({props:u}),te.push(()=>de(l,"value",a)),{c(){e=v("label"),t=U("Password"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.value=f[0].smtp.password,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function rA(n){let e,t,i;return{c(){e=v("button"),e.innerHTML=` + `,y=U("."),p(e,"for",i=n[31]),p(f,"type","button"),p(f,"class","label label-sm link-primary txt-mono"),p(d,"type","button"),p(d,"class","label label-sm link-primary txt-mono"),p(_,"type","button"),p(_,"class","label label-sm link-primary txt-mono"),p(b,"type","button"),p(b,"class","label label-sm link-primary txt-mono"),p(b,"title","Required parameter"),p(a,"class","help-block")},m(D,L){w(D,e,L),g(e,t),w(D,s,L),M[l].m(D,L),w(D,r,L),w(D,a,L),g(a,u),g(a,f),g(a,c),g(a,d),g(a,m),g(a,_),g(a,h),g(a,b),g(a,y),S=!0,C||($=[J(f,"click",n[22]),J(d,"click",n[23]),J(_,"click",n[24]),J(b,"click",n[25])],C=!0)},p(D,L){(!S||L[1]&1&&i!==(i=D[31]))&&p(e,"for",i);let P=l;l=O(D),l===P?M[l].p(D,L):(ae(),I(M[P],1,1,()=>{M[P]=null}),ue(),o=M[l],o?o.p(D,L):(o=M[l]=T[l](D),o.c()),A(o,1),o.m(r.parentNode,r))},i(D){S||(A(o),S=!0)},o(D){I(o),S=!1},d(D){D&&k(e),D&&k(s),M[l].d(D),D&&k(r),D&&k(a),C=!1,Ee($)}}}function qD(n){let e,t,i,s,l,o;return e=new pe({props:{class:"form-field required",name:n[1]+".subject",$$slots:{default:[LD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),i=new pe({props:{class:"form-field required",name:n[1]+".actionUrl",$$slots:{default:[PD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),l=new pe({props:{class:"form-field m-0 required",name:n[1]+".body",$$slots:{default:[RD,({uniqueId:r})=>({31:r}),({uniqueId:r})=>[0,r?1:0]]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment),s=E(),H(l.$$.fragment)},m(r,a){V(e,r,a),w(r,t,a),V(i,r,a),w(r,s,a),V(l,r,a),o=!0},p(r,a){const u={};a[0]&2&&(u.name=r[1]+".subject"),a[0]&1|a[1]&3&&(u.$$scope={dirty:a,ctx:r}),e.$set(u);const f={};a[0]&2&&(f.name=r[1]+".actionUrl"),a[0]&1|a[1]&3&&(f.$$scope={dirty:a,ctx:r}),i.$set(f);const c={};a[0]&2&&(c.name=r[1]+".body"),a[0]&49|a[1]&3&&(c.$$scope={dirty:a,ctx:r}),l.$set(c)},i(r){o||(A(e.$$.fragment,r),A(i.$$.fragment,r),A(l.$$.fragment,r),o=!0)},o(r){I(e.$$.fragment,r),I(i.$$.fragment,r),I(l.$$.fragment,r),o=!1},d(r){z(e,r),r&&k(t),z(i,r),r&&k(s),z(l,r)}}}function Lh(n){let e,t,i,s,l;return{c(){e=v("i"),p(e,"class","ri-error-warning-fill txt-danger")},m(o,r){w(o,e,r),i=!0,s||(l=Me(He.call(null,e,{text:"Has errors",position:"left"})),s=!0)},i(o){i||(o&&Qe(()=>{i&&(t||(t=je(e,Kt,{duration:150,start:.7},!0)),t.run(1))}),i=!0)},o(o){o&&(t||(t=je(e,Kt,{duration:150,start:.7},!1)),t.run(0)),i=!1},d(o){o&&k(e),o&&t&&t.end(),s=!1,l()}}}function jD(n){let e,t,i,s,l,o,r,a,u,f=n[6]&&Lh();return{c(){e=v("div"),t=v("i"),i=E(),s=v("span"),l=U(n[2]),o=E(),r=v("div"),a=E(),f&&f.c(),u=ye(),p(t,"class","ri-draft-line"),p(s,"class","txt"),p(e,"class","inline-flex"),p(r,"class","flex-fill")},m(c,d){w(c,e,d),g(e,t),g(e,i),g(e,s),g(s,l),w(c,o,d),w(c,r,d),w(c,a,d),f&&f.m(c,d),w(c,u,d)},p(c,d){d[0]&4&&se(l,c[2]),c[6]?f?d[0]&64&&A(f,1):(f=Lh(),f.c(),A(f,1),f.m(u.parentNode,u)):f&&(ae(),I(f,1,1,()=>{f=null}),ue())},d(c){c&&k(e),c&&k(o),c&&k(r),c&&k(a),f&&f.d(c),c&&k(u)}}}function VD(n){let e,t;const i=[n[8]];let s={$$slots:{header:[jD],default:[qD]},$$scope:{ctx:n}};for(let l=0;lt(12,o=W));let{key:r}=e,{title:a}=e,{config:u={}}=e,f,c=Ph,d=!1;function m(){f==null||f.expand()}function _(){f==null||f.collapse()}function h(){f==null||f.collapseSiblings()}async function b(){c||d||(t(5,d=!0),t(4,c=(await at(()=>import("./CodeEditor-ea0b96ae.js"),["./CodeEditor-ea0b96ae.js","./index-fd4289fb.js"],import.meta.url)).default),Ph=c,t(5,d=!1))}function y(W){B.copyToClipboard(W),ko(`Copied ${W} to clipboard`,2e3)}b();function S(){u.subject=this.value,t(0,u)}const C=()=>y("{APP_NAME}"),$=()=>y("{APP_URL}");function T(){u.actionUrl=this.value,t(0,u)}const M=()=>y("{APP_NAME}"),O=()=>y("{APP_URL}"),D=()=>y("{TOKEN}");function L(W){n.$$.not_equal(u.body,W)&&(u.body=W,t(0,u))}function P(){u.body=this.value,t(0,u)}const N=()=>y("{APP_NAME}"),F=()=>y("{APP_URL}"),R=()=>y("{TOKEN}"),q=()=>y("{ACTION_URL}");function j(W){te[W?"unshift":"push"](()=>{f=W,t(3,f)})}function Y(W){Ne.call(this,n,W)}function X(W){Ne.call(this,n,W)}function G(W){Ne.call(this,n,W)}return n.$$set=W=>{e=qe(qe({},e),Zt(W)),t(8,l=xe(e,s)),"key"in W&&t(1,r=W.key),"title"in W&&t(2,a=W.title),"config"in W&&t(0,u=W.config)},n.$$.update=()=>{n.$$.dirty[0]&4098&&t(6,i=!B.isEmpty(B.getNestedVal(o,r))),n.$$.dirty[0]&3&&(u.enabled||ai(r))},[u,r,a,f,c,d,i,y,l,m,_,h,o,S,C,$,T,M,O,D,L,P,N,F,R,q,j,Y,X,G]}class qr extends ge{constructor(e){super(),_e(this,e,zD,VD,me,{key:1,title:2,config:0,expand:9,collapse:10,collapseSiblings:11},null,[-1,-1])}get expand(){return this.$$.ctx[9]}get collapse(){return this.$$.ctx[10]}get collapseSiblings(){return this.$$.ctx[11]}}function Nh(n,e,t){const i=n.slice();return i[21]=e[t],i}function Fh(n,e){let t,i,s,l,o,r=e[21].label+"",a,u,f,c,d,m;return c=Y1(e[11][0]),{key:n,first:null,c(){t=v("div"),i=v("input"),l=E(),o=v("label"),a=U(r),f=E(),p(i,"type","radio"),p(i,"name","template"),p(i,"id",s=e[20]+e[21].value),i.__value=e[21].value,i.value=i.__value,p(o,"for",u=e[20]+e[21].value),p(t,"class","form-field-block"),c.p(i),this.first=t},m(_,h){w(_,t,h),g(t,i),i.checked=i.__value===e[2],g(t,l),g(t,o),g(o,a),g(t,f),d||(m=J(i,"change",e[10]),d=!0)},p(_,h){e=_,h&1048576&&s!==(s=e[20]+e[21].value)&&p(i,"id",s),h&4&&(i.checked=i.__value===e[2]),h&1048576&&u!==(u=e[20]+e[21].value)&&p(o,"for",u)},d(_){_&&k(t),c.r(),d=!1,m()}}}function HD(n){let e=[],t=new Map,i,s=n[7];const l=o=>o[21].value;for(let o=0;o({20:a}),({uniqueId:a})=>a?1048576:0]},$$scope:{ctx:n}}}),s=new pe({props:{class:"form-field required m-0",name:"email",$$slots:{default:[BD,({uniqueId:a})=>({20:a}),({uniqueId:a})=>a?1048576:0]},$$scope:{ctx:n}}}),{c(){e=v("form"),H(t.$$.fragment),i=E(),H(s.$$.fragment),p(e,"id",n[6]),p(e,"autocomplete","off")},m(a,u){w(a,e,u),V(t,e,null),g(e,i),V(s,e,null),l=!0,o||(r=J(e,"submit",et(n[13])),o=!0)},p(a,u){const f={};u&17825796&&(f.$$scope={dirty:u,ctx:a}),t.$set(f);const c={};u&17825794&&(c.$$scope={dirty:u,ctx:a}),s.$set(c)},i(a){l||(A(t.$$.fragment,a),A(s.$$.fragment,a),l=!0)},o(a){I(t.$$.fragment,a),I(s.$$.fragment,a),l=!1},d(a){a&&k(e),z(t),z(s),o=!1,r()}}}function WD(n){let e;return{c(){e=v("h4"),e.textContent="Send test email",p(e,"class","center txt-break")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function YD(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("button"),t=U("Close"),i=E(),s=v("button"),l=v("i"),o=E(),r=v("span"),r.textContent="Send",p(e,"type","button"),p(e,"class","btn btn-transparent"),e.disabled=n[4],p(l,"class","ri-mail-send-line"),p(r,"class","txt"),p(s,"type","submit"),p(s,"form",n[6]),p(s,"class","btn btn-expanded"),s.disabled=a=!n[5]||n[4],Q(s,"btn-loading",n[4])},m(c,d){w(c,e,d),g(e,t),w(c,i,d),w(c,s,d),g(s,l),g(s,o),g(s,r),u||(f=J(e,"click",n[0]),u=!0)},p(c,d){d&16&&(e.disabled=c[4]),d&48&&a!==(a=!c[5]||c[4])&&(s.disabled=a),d&16&&Q(s,"btn-loading",c[4])},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,f()}}}function KD(n){let e,t,i={class:"overlay-panel-sm email-test-popup",overlayClose:!n[4],escClose:!n[4],beforeHide:n[14],popup:!0,$$slots:{footer:[YD],header:[WD],default:[UD]},$$scope:{ctx:n}};return e=new ln({props:i}),n[15](e),e.$on("show",n[16]),e.$on("hide",n[17]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&16&&(o.overlayClose=!s[4]),l&16&&(o.escClose=!s[4]),l&16&&(o.beforeHide=s[14]),l&16777270&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[15](null),z(e,s)}}}const jr="last_email_test",Rh="email_test_request";function JD(n,e,t){let i;const s=$t(),l="email_test_"+B.randomString(5),o=[{label:'"Verification" template',value:"verification"},{label:'"Password reset" template',value:"password-reset"},{label:'"Confirm email change" template',value:"email-change"}];let r,a=localStorage.getItem(jr),u=o[0].value,f=!1,c=null;function d(O="",D=""){t(1,a=O||localStorage.getItem(jr)),t(2,u=D||o[0].value),en({}),r==null||r.show()}function m(){return clearTimeout(c),r==null?void 0:r.hide()}async function _(){if(!(!i||f)){t(4,f=!0),localStorage==null||localStorage.setItem(jr,a),clearTimeout(c),c=setTimeout(()=>{ce.cancelRequest(Rh),Ds("Test email send timeout.")},3e4);try{await ce.settings.testEmail(a,u,{$cancelKey:Rh}),zt("Successfully sent test email."),s("submit"),t(4,f=!1),await fn(),m()}catch(O){t(4,f=!1),ce.error(O)}clearTimeout(c)}}const h=[[]];function b(){u=this.__value,t(2,u)}function y(){a=this.value,t(1,a)}const S=()=>_(),C=()=>!f;function $(O){te[O?"unshift":"push"](()=>{r=O,t(3,r)})}function T(O){Ne.call(this,n,O)}function M(O){Ne.call(this,n,O)}return n.$$.update=()=>{n.$$.dirty&6&&t(5,i=!!a&&!!u)},[m,a,u,r,f,i,l,o,_,d,b,h,y,S,C,$,T,M]}class ZD extends ge{constructor(e){super(),_e(this,e,JD,KD,me,{show:9,hide:0})}get show(){return this.$$.ctx[9]}get hide(){return this.$$.ctx[0]}}function GD(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L,P;i=new pe({props:{class:"form-field required",name:"meta.senderName",$$slots:{default:[QD,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:"meta.senderAddress",$$slots:{default:[xD,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}});function N(ee){n[14](ee)}let F={single:!0,key:"meta.verificationTemplate",title:'Default "Verification" email template'};n[0].meta.verificationTemplate!==void 0&&(F.config=n[0].meta.verificationTemplate),u=new qr({props:F}),te.push(()=>de(u,"config",N));function R(ee){n[15](ee)}let q={single:!0,key:"meta.resetPasswordTemplate",title:'Default "Password reset" email template'};n[0].meta.resetPasswordTemplate!==void 0&&(q.config=n[0].meta.resetPasswordTemplate),d=new qr({props:q}),te.push(()=>de(d,"config",R));function j(ee){n[16](ee)}let Y={single:!0,key:"meta.confirmEmailChangeTemplate",title:'Default "Confirm email change" email template'};n[0].meta.confirmEmailChangeTemplate!==void 0&&(Y.config=n[0].meta.confirmEmailChangeTemplate),h=new qr({props:Y}),te.push(()=>de(h,"config",j)),$=new pe({props:{class:"form-field form-field-toggle m-b-sm",$$slots:{default:[eA,({uniqueId:ee})=>({31:ee}),({uniqueId:ee})=>[0,ee?1:0]]},$$scope:{ctx:n}}});let X=n[0].smtp.enabled&&qh(n);function G(ee,ie){return ee[4]?aA:rA}let W=G(n),le=W(n);return{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),c=E(),H(d.$$.fragment),_=E(),H(h.$$.fragment),y=E(),S=v("hr"),C=E(),H($.$$.fragment),T=E(),X&&X.c(),M=E(),O=v("div"),D=v("div"),L=E(),le.c(),p(t,"class","col-lg-6"),p(l,"class","col-lg-6"),p(e,"class","grid m-b-base"),p(a,"class","accordions"),p(D,"class","flex-fill"),p(O,"class","flex")},m(ee,ie){w(ee,e,ie),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),w(ee,r,ie),w(ee,a,ie),V(u,a,null),g(a,c),V(d,a,null),g(a,_),V(h,a,null),w(ee,y,ie),w(ee,S,ie),w(ee,C,ie),V($,ee,ie),w(ee,T,ie),X&&X.m(ee,ie),w(ee,M,ie),w(ee,O,ie),g(O,D),g(O,L),le.m(O,null),P=!0},p(ee,ie){const be={};ie[0]&1|ie[1]&3&&(be.$$scope={dirty:ie,ctx:ee}),i.$set(be);const Se={};ie[0]&1|ie[1]&3&&(Se.$$scope={dirty:ie,ctx:ee}),o.$set(Se);const Ve={};!f&&ie[0]&1&&(f=!0,Ve.config=ee[0].meta.verificationTemplate,he(()=>f=!1)),u.$set(Ve);const Be={};!m&&ie[0]&1&&(m=!0,Be.config=ee[0].meta.resetPasswordTemplate,he(()=>m=!1)),d.$set(Be);const ke={};!b&&ie[0]&1&&(b=!0,ke.config=ee[0].meta.confirmEmailChangeTemplate,he(()=>b=!1)),h.$set(ke);const Te={};ie[0]&1|ie[1]&3&&(Te.$$scope={dirty:ie,ctx:ee}),$.$set(Te),ee[0].smtp.enabled?X?(X.p(ee,ie),ie[0]&1&&A(X,1)):(X=qh(ee),X.c(),A(X,1),X.m(M.parentNode,M)):X&&(ae(),I(X,1,1,()=>{X=null}),ue()),W===(W=G(ee))&&le?le.p(ee,ie):(le.d(1),le=W(ee),le&&(le.c(),le.m(O,null)))},i(ee){P||(A(i.$$.fragment,ee),A(o.$$.fragment,ee),A(u.$$.fragment,ee),A(d.$$.fragment,ee),A(h.$$.fragment,ee),A($.$$.fragment,ee),A(X),P=!0)},o(ee){I(i.$$.fragment,ee),I(o.$$.fragment,ee),I(u.$$.fragment,ee),I(d.$$.fragment,ee),I(h.$$.fragment,ee),I($.$$.fragment,ee),I(X),P=!1},d(ee){ee&&k(e),z(i),z(o),ee&&k(r),ee&&k(a),z(u),z(d),z(h),ee&&k(y),ee&&k(S),ee&&k(C),z($,ee),ee&&k(T),X&&X.d(ee),ee&&k(M),ee&&k(O),le.d()}}}function XD(n){let e;return{c(){e=v("div"),p(e,"class","loader")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function QD(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Sender name"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].meta.senderName),r||(a=J(l,"input",n[12]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].meta.senderName&&re(l,u[0].meta.senderName)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function xD(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Sender address"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","email"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].meta.senderAddress),r||(a=J(l,"input",n[13]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].meta.senderAddress&&re(l,u[0].meta.senderAddress)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function eA(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("input"),i=E(),s=v("label"),l=v("span"),l.innerHTML="Use SMTP mail server (recommended)",o=E(),r=v("i"),p(e,"type","checkbox"),p(e,"id",t=n[31]),e.required=!0,p(l,"class","txt"),p(r,"class","ri-information-line link-hint"),p(s,"for",a=n[31])},m(c,d){w(c,e,d),e.checked=n[0].smtp.enabled,w(c,i,d),w(c,s,d),g(s,l),g(s,o),g(s,r),u||(f=[J(e,"change",n[17]),Me(He.call(null,r,{text:'By default PocketBase uses the unix "sendmail" command for sending emails. For better emails deliverability it is recommended to use a SMTP mail server.',position:"top"}))],u=!0)},p(c,d){d[1]&1&&t!==(t=c[31])&&p(e,"id",t),d[0]&1&&(e.checked=c[0].smtp.enabled),d[1]&1&&a!==(a=c[31])&&p(s,"for",a)},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,Ee(f)}}}function qh(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M;return i=new pe({props:{class:"form-field required",name:"smtp.host",$$slots:{default:[tA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:"smtp.port",$$slots:{default:[nA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),u=new pe({props:{class:"form-field required",name:"smtp.tls",$$slots:{default:[iA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),d=new pe({props:{class:"form-field",name:"smtp.authMethod",$$slots:{default:[sA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),h=new pe({props:{class:"form-field",name:"smtp.username",$$slots:{default:[lA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),S=new pe({props:{class:"form-field",name:"smtp.password",$$slots:{default:[oA,({uniqueId:O})=>({31:O}),({uniqueId:O})=>[0,O?1:0]]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),f=E(),c=v("div"),H(d.$$.fragment),m=E(),_=v("div"),H(h.$$.fragment),b=E(),y=v("div"),H(S.$$.fragment),C=E(),$=v("div"),p(t,"class","col-lg-4"),p(l,"class","col-lg-2"),p(a,"class","col-lg-3"),p(c,"class","col-lg-3"),p(_,"class","col-lg-6"),p(y,"class","col-lg-6"),p($,"class","col-lg-12"),p(e,"class","grid")},m(O,D){w(O,e,D),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),V(u,a,null),g(e,f),g(e,c),V(d,c,null),g(e,m),g(e,_),V(h,_,null),g(e,b),g(e,y),V(S,y,null),g(e,C),g(e,$),M=!0},p(O,D){const L={};D[0]&1|D[1]&3&&(L.$$scope={dirty:D,ctx:O}),i.$set(L);const P={};D[0]&1|D[1]&3&&(P.$$scope={dirty:D,ctx:O}),o.$set(P);const N={};D[0]&1|D[1]&3&&(N.$$scope={dirty:D,ctx:O}),u.$set(N);const F={};D[0]&1|D[1]&3&&(F.$$scope={dirty:D,ctx:O}),d.$set(F);const R={};D[0]&1|D[1]&3&&(R.$$scope={dirty:D,ctx:O}),h.$set(R);const q={};D[0]&1|D[1]&3&&(q.$$scope={dirty:D,ctx:O}),S.$set(q)},i(O){M||(A(i.$$.fragment,O),A(o.$$.fragment,O),A(u.$$.fragment,O),A(d.$$.fragment,O),A(h.$$.fragment,O),A(S.$$.fragment,O),O&&Qe(()=>{M&&(T||(T=je(e,ot,{duration:150},!0)),T.run(1))}),M=!0)},o(O){I(i.$$.fragment,O),I(o.$$.fragment,O),I(u.$$.fragment,O),I(d.$$.fragment,O),I(h.$$.fragment,O),I(S.$$.fragment,O),O&&(T||(T=je(e,ot,{duration:150},!1)),T.run(0)),M=!1},d(O){O&&k(e),z(i),z(o),z(u),z(d),z(h),z(S),O&&T&&T.end()}}}function tA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("SMTP server host"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.host),r||(a=J(l,"input",n[18]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].smtp.host&&re(l,u[0].smtp.host)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function nA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Port"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","number"),p(l,"id",o=n[31]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.port),r||(a=J(l,"input",n[19]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&dt(l.value)!==u[0].smtp.port&&re(l,u[0].smtp.port)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function iA(n){let e,t,i,s,l,o,r;function a(f){n[20](f)}let u={id:n[31],items:n[6]};return n[0].smtp.tls!==void 0&&(u.keyOfSelected=n[0].smtp.tls),l=new Hi({props:u}),te.push(()=>de(l,"keyOfSelected",a)),{c(){e=v("label"),t=U("TLS encryption"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.keyOfSelected=f[0].smtp.tls,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function sA(n){let e,t,i,s,l,o,r;function a(f){n[21](f)}let u={id:n[31],items:n[7]};return n[0].smtp.authMethod!==void 0&&(u.keyOfSelected=n[0].smtp.authMethod),l=new Hi({props:u}),te.push(()=>de(l,"keyOfSelected",a)),{c(){e=v("label"),t=U("AUTH method"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.keyOfSelected=f[0].smtp.authMethod,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function lA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Username"),s=E(),l=v("input"),p(e,"for",i=n[31]),p(l,"type","text"),p(l,"id",o=n[31])},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].smtp.username),r||(a=J(l,"input",n[22]),r=!0)},p(u,f){f[1]&1&&i!==(i=u[31])&&p(e,"for",i),f[1]&1&&o!==(o=u[31])&&p(l,"id",o),f[0]&1&&l.value!==u[0].smtp.username&&re(l,u[0].smtp.username)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function oA(n){let e,t,i,s,l,o,r;function a(f){n[23](f)}let u={id:n[31]};return n[0].smtp.password!==void 0&&(u.value=n[0].smtp.password),l=new mu({props:u}),te.push(()=>de(l,"value",a)),{c(){e=v("label"),t=U("Password"),s=E(),H(l.$$.fragment),p(e,"for",i=n[31])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c[1]&1&&i!==(i=f[31]))&&p(e,"for",i);const d={};c[1]&1&&(d.id=f[31]),!o&&c[0]&1&&(o=!0,d.value=f[0].smtp.password,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function rA(n){let e,t,i;return{c(){e=v("button"),e.innerHTML=` Send test email`,p(e,"type","button"),p(e,"class","btn btn-expanded btn-outline")},m(s,l){w(s,e,l),t||(i=J(e,"click",n[26]),t=!0)},p:x,d(s){s&&k(e),t=!1,i()}}}function aA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("button"),t=v("span"),t.textContent="Cancel",i=E(),s=v("button"),l=v("span"),l.textContent="Save changes",p(t,"class","txt"),p(e,"type","button"),p(e,"class","btn btn-transparent btn-hint"),e.disabled=n[3],p(l,"class","txt"),p(s,"type","submit"),p(s,"class","btn btn-expanded"),s.disabled=o=!n[4]||n[3],Q(s,"btn-loading",n[3])},m(u,f){w(u,e,f),g(e,t),w(u,i,f),w(u,s,f),g(s,l),r||(a=[J(e,"click",n[24]),J(s,"click",n[25])],r=!0)},p(u,f){f[0]&8&&(e.disabled=u[3]),f[0]&24&&o!==(o=!u[4]||u[3])&&(s.disabled=o),f[0]&8&&Q(s,"btn-loading",u[3])},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,Ee(a)}}}function uA(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b;const y=[XD,GD],S=[];function C($,T){return $[2]?0:1}return d=C(n),m=S[d]=y[d](n),{c(){e=v("header"),t=v("nav"),i=v("div"),i.textContent="Settings",s=E(),l=v("div"),o=U(n[5]),r=E(),a=v("div"),u=v("form"),f=v("div"),f.innerHTML="

    Configure common settings for sending emails.

    ",c=E(),m.c(),p(i,"class","breadcrumb-item"),p(l,"class","breadcrumb-item"),p(t,"class","breadcrumbs"),p(e,"class","page-header"),p(f,"class","content txt-xl m-b-base"),p(u,"class","panel"),p(u,"autocomplete","off"),p(a,"class","wrapper")},m($,T){w($,e,T),g(e,t),g(t,i),g(t,s),g(t,l),g(l,o),w($,r,T),w($,a,T),g(a,u),g(u,f),g(u,c),S[d].m(u,null),_=!0,h||(b=J(u,"submit",et(n[27])),h=!0)},p($,T){(!_||T[0]&32)&&se(o,$[5]);let M=d;d=C($),d===M?S[d].p($,T):(ae(),I(S[M],1,1,()=>{S[M]=null}),ue(),m=S[d],m?m.p($,T):(m=S[d]=y[d]($),m.c()),A(m,1),m.m(u,null))},i($){_||(A(m),_=!0)},o($){I(m),_=!1},d($){$&&k(e),$&&k(r),$&&k(a),S[d].d(),h=!1,b()}}}function fA(n){let e,t,i,s,l,o;e=new Ci({}),i=new wn({props:{$$slots:{default:[uA]},$$scope:{ctx:n}}});let r={};return l=new ZD({props:r}),n[28](l),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment),s=E(),H(l.$$.fragment)},m(a,u){V(e,a,u),w(a,t,u),V(i,a,u),w(a,s,u),V(l,a,u),o=!0},p(a,u){const f={};u[0]&63|u[1]&2&&(f.$$scope={dirty:u,ctx:a}),i.$set(f);const c={};l.$set(c)},i(a){o||(A(e.$$.fragment,a),A(i.$$.fragment,a),A(l.$$.fragment,a),o=!0)},o(a){I(e.$$.fragment,a),I(i.$$.fragment,a),I(l.$$.fragment,a),o=!1},d(a){z(e,a),a&&k(t),z(i,a),a&&k(s),n[28](null),z(l,a)}}}function cA(n,e,t){let i,s,l;Je(n,Tt,G=>t(5,l=G));const o=[{label:"Auto (StartTLS)",value:!1},{label:"Always",value:!0}],r=[{label:"PLAIN (default)",value:"PLAIN"},{label:"LOGIN",value:"LOGIN"}];sn(Tt,l="Mail settings",l);let a,u={},f={},c=!1,d=!1;m();async function m(){t(2,c=!0);try{const G=await ce.settings.getAll()||{};h(G)}catch(G){ce.error(G)}t(2,c=!1)}async function _(){if(!(d||!s)){t(3,d=!0);try{const G=await ce.settings.update(B.filterRedactedProps(f));h(G),en({}),zt("Successfully saved mail settings.")}catch(G){ce.error(G)}t(3,d=!1)}}function h(G={}){t(0,f={meta:(G==null?void 0:G.meta)||{},smtp:(G==null?void 0:G.smtp)||{}}),f.smtp.authMethod||t(0,f.smtp.authMethod=r[0].value,f),t(10,u=JSON.parse(JSON.stringify(f)))}function b(){t(0,f=JSON.parse(JSON.stringify(u||{})))}function y(){f.meta.senderName=this.value,t(0,f)}function S(){f.meta.senderAddress=this.value,t(0,f)}function C(G){n.$$.not_equal(f.meta.verificationTemplate,G)&&(f.meta.verificationTemplate=G,t(0,f))}function $(G){n.$$.not_equal(f.meta.resetPasswordTemplate,G)&&(f.meta.resetPasswordTemplate=G,t(0,f))}function T(G){n.$$.not_equal(f.meta.confirmEmailChangeTemplate,G)&&(f.meta.confirmEmailChangeTemplate=G,t(0,f))}function M(){f.smtp.enabled=this.checked,t(0,f)}function O(){f.smtp.host=this.value,t(0,f)}function D(){f.smtp.port=dt(this.value),t(0,f)}function L(G){n.$$.not_equal(f.smtp.tls,G)&&(f.smtp.tls=G,t(0,f))}function P(G){n.$$.not_equal(f.smtp.authMethod,G)&&(f.smtp.authMethod=G,t(0,f))}function N(){f.smtp.username=this.value,t(0,f)}function F(G){n.$$.not_equal(f.smtp.password,G)&&(f.smtp.password=G,t(0,f))}const R=()=>b(),q=()=>_(),j=()=>a==null?void 0:a.show(),Y=()=>_();function X(G){te[G?"unshift":"push"](()=>{a=G,t(1,a)})}return n.$$.update=()=>{n.$$.dirty[0]&1024&&t(11,i=JSON.stringify(u)),n.$$.dirty[0]&2049&&t(4,s=i!=JSON.stringify(f))},[f,a,c,d,s,l,o,r,_,b,u,i,y,S,C,$,T,M,O,D,L,P,N,F,R,q,j,Y,X]}class dA extends ge{constructor(e){super(),_e(this,e,cA,fA,me,{},null,[-1,-1])}}const pA=n=>({isTesting:n&4,testError:n&2,enabled:n&1}),jh=n=>({isTesting:n[2],testError:n[1],enabled:n[0].enabled});function mA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U(n[4]),p(e,"type","checkbox"),p(e,"id",t=n[20]),e.required=!0,p(s,"for",o=n[20])},m(u,f){w(u,e,f),e.checked=n[0].enabled,w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[8]),r=!0)},p(u,f){f&1048576&&t!==(t=u[20])&&p(e,"id",t),f&1&&(e.checked=u[0].enabled),f&16&&se(l,u[4]),f&1048576&&o!==(o=u[20])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function Vh(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M;return i=new pe({props:{class:"form-field required",name:n[3]+".endpoint",$$slots:{default:[hA,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),o=new pe({props:{class:"form-field required",name:n[3]+".bucket",$$slots:{default:[_A,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),u=new pe({props:{class:"form-field required",name:n[3]+".region",$$slots:{default:[gA,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),d=new pe({props:{class:"form-field required",name:n[3]+".accessKey",$$slots:{default:[bA,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),h=new pe({props:{class:"form-field required",name:n[3]+".secret",$$slots:{default:[vA,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),S=new pe({props:{class:"form-field",name:n[3]+".forcePathStyle",$$slots:{default:[yA,({uniqueId:O})=>({20:O}),({uniqueId:O})=>O?1048576:0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),H(i.$$.fragment),s=E(),l=v("div"),H(o.$$.fragment),r=E(),a=v("div"),H(u.$$.fragment),f=E(),c=v("div"),H(d.$$.fragment),m=E(),_=v("div"),H(h.$$.fragment),b=E(),y=v("div"),H(S.$$.fragment),C=E(),$=v("div"),p(t,"class","col-lg-6"),p(l,"class","col-lg-3"),p(a,"class","col-lg-3"),p(c,"class","col-lg-6"),p(_,"class","col-lg-6"),p(y,"class","col-lg-12"),p($,"class","col-lg-12"),p(e,"class","grid")},m(O,D){w(O,e,D),g(e,t),V(i,t,null),g(e,s),g(e,l),V(o,l,null),g(e,r),g(e,a),V(u,a,null),g(e,f),g(e,c),V(d,c,null),g(e,m),g(e,_),V(h,_,null),g(e,b),g(e,y),V(S,y,null),g(e,C),g(e,$),M=!0},p(O,D){const L={};D&8&&(L.name=O[3]+".endpoint"),D&1081345&&(L.$$scope={dirty:D,ctx:O}),i.$set(L);const P={};D&8&&(P.name=O[3]+".bucket"),D&1081345&&(P.$$scope={dirty:D,ctx:O}),o.$set(P);const N={};D&8&&(N.name=O[3]+".region"),D&1081345&&(N.$$scope={dirty:D,ctx:O}),u.$set(N);const F={};D&8&&(F.name=O[3]+".accessKey"),D&1081345&&(F.$$scope={dirty:D,ctx:O}),d.$set(F);const R={};D&8&&(R.name=O[3]+".secret"),D&1081345&&(R.$$scope={dirty:D,ctx:O}),h.$set(R);const q={};D&8&&(q.name=O[3]+".forcePathStyle"),D&1081345&&(q.$$scope={dirty:D,ctx:O}),S.$set(q)},i(O){M||(A(i.$$.fragment,O),A(o.$$.fragment,O),A(u.$$.fragment,O),A(d.$$.fragment,O),A(h.$$.fragment,O),A(S.$$.fragment,O),O&&Qe(()=>{M&&(T||(T=je(e,ot,{duration:150},!0)),T.run(1))}),M=!0)},o(O){I(i.$$.fragment,O),I(o.$$.fragment,O),I(u.$$.fragment,O),I(d.$$.fragment,O),I(h.$$.fragment,O),I(S.$$.fragment,O),O&&(T||(T=je(e,ot,{duration:150},!1)),T.run(0)),M=!1},d(O){O&&k(e),z(i),z(o),z(u),z(d),z(h),z(S),O&&T&&T.end()}}}function hA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Endpoint"),s=E(),l=v("input"),p(e,"for",i=n[20]),p(l,"type","text"),p(l,"id",o=n[20]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].endpoint),r||(a=J(l,"input",n[9]),r=!0)},p(u,f){f&1048576&&i!==(i=u[20])&&p(e,"for",i),f&1048576&&o!==(o=u[20])&&p(l,"id",o),f&1&&l.value!==u[0].endpoint&&re(l,u[0].endpoint)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function _A(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Bucket"),s=E(),l=v("input"),p(e,"for",i=n[20]),p(l,"type","text"),p(l,"id",o=n[20]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].bucket),r||(a=J(l,"input",n[10]),r=!0)},p(u,f){f&1048576&&i!==(i=u[20])&&p(e,"for",i),f&1048576&&o!==(o=u[20])&&p(l,"id",o),f&1&&l.value!==u[0].bucket&&re(l,u[0].bucket)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function gA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Region"),s=E(),l=v("input"),p(e,"for",i=n[20]),p(l,"type","text"),p(l,"id",o=n[20]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].region),r||(a=J(l,"input",n[11]),r=!0)},p(u,f){f&1048576&&i!==(i=u[20])&&p(e,"for",i),f&1048576&&o!==(o=u[20])&&p(l,"id",o),f&1&&l.value!==u[0].region&&re(l,u[0].region)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function bA(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Access key"),s=E(),l=v("input"),p(e,"for",i=n[20]),p(l,"type","text"),p(l,"id",o=n[20]),l.required=!0},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[0].accessKey),r||(a=J(l,"input",n[12]),r=!0)},p(u,f){f&1048576&&i!==(i=u[20])&&p(e,"for",i),f&1048576&&o!==(o=u[20])&&p(l,"id",o),f&1&&l.value!==u[0].accessKey&&re(l,u[0].accessKey)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function vA(n){let e,t,i,s,l,o,r;function a(f){n[13](f)}let u={id:n[20],required:!0};return n[0].secret!==void 0&&(u.value=n[0].secret),l=new mu({props:u}),te.push(()=>de(l,"value",a)),{c(){e=v("label"),t=U("Secret"),s=E(),H(l.$$.fragment),p(e,"for",i=n[20])},m(f,c){w(f,e,c),g(e,t),w(f,s,c),V(l,f,c),r=!0},p(f,c){(!r||c&1048576&&i!==(i=f[20]))&&p(e,"for",i);const d={};c&1048576&&(d.id=f[20]),!o&&c&1&&(o=!0,d.value=f[0].secret,he(()=>o=!1)),l.$set(d)},i(f){r||(A(l.$$.fragment,f),r=!0)},o(f){I(l.$$.fragment,f),r=!1},d(f){f&&k(e),f&&k(s),z(l,f)}}}function yA(n){let e,t,i,s,l,o,r,a,u,f;return{c(){e=v("input"),i=E(),s=v("label"),l=v("span"),l.textContent="Force path-style addressing",o=E(),r=v("i"),p(e,"type","checkbox"),p(e,"id",t=n[20]),p(l,"class","txt"),p(r,"class","ri-information-line link-hint"),p(s,"for",a=n[20])},m(c,d){w(c,e,d),e.checked=n[0].forcePathStyle,w(c,i,d),w(c,s,d),g(s,l),g(s,o),g(s,r),u||(f=[J(e,"change",n[14]),Me(He.call(null,r,{text:'Forces the request to use path-style addressing, eg. "https://s3.amazonaws.com/BUCKET/KEY" instead of the default "https://BUCKET.s3.amazonaws.com/KEY".',position:"top"}))],u=!0)},p(c,d){d&1048576&&t!==(t=c[20])&&p(e,"id",t),d&1&&(e.checked=c[0].forcePathStyle),d&1048576&&a!==(a=c[20])&&p(s,"for",a)},d(c){c&&k(e),c&&k(i),c&&k(s),u=!1,Ee(f)}}}function kA(n){let e,t,i,s,l;e=new pe({props:{class:"form-field form-field-toggle",$$slots:{default:[mA,({uniqueId:u})=>({20:u}),({uniqueId:u})=>u?1048576:0]},$$scope:{ctx:n}}});const o=n[7].default,r=yt(o,n,n[15],jh);let a=n[0].enabled&&Vh(n);return{c(){H(e.$$.fragment),t=E(),r&&r.c(),i=E(),a&&a.c(),s=ye()},m(u,f){V(e,u,f),w(u,t,f),r&&r.m(u,f),w(u,i,f),a&&a.m(u,f),w(u,s,f),l=!0},p(u,[f]){const c={};f&1081361&&(c.$$scope={dirty:f,ctx:u}),e.$set(c),r&&r.p&&(!l||f&32775)&&wt(r,o,u,u[15],l?kt(o,u[15],f,pA):St(u[15]),jh),u[0].enabled?a?(a.p(u,f),f&1&&A(a,1)):(a=Vh(u),a.c(),A(a,1),a.m(s.parentNode,s)):a&&(ae(),I(a,1,1,()=>{a=null}),ue())},i(u){l||(A(e.$$.fragment,u),A(r,u),A(a),l=!0)},o(u){I(e.$$.fragment,u),I(r,u),I(a),l=!1},d(u){z(e,u),u&&k(t),r&&r.d(u),u&&k(i),a&&a.d(u),u&&k(s)}}}const Vr="s3_test_request";function wA(n,e,t){let{$$slots:i={},$$scope:s}=e,{originalConfig:l={}}=e,{config:o={}}=e,{configKey:r="s3"}=e,{toggleLabel:a="Enable S3"}=e,{testFilesystem:u="storage"}=e,{testError:f=null}=e,{isTesting:c=!1}=e,d=null,m=null;function _(O){t(2,c=!0),clearTimeout(m),m=setTimeout(()=>{h()},O)}async function h(){if(t(1,f=null),!o.enabled)return t(2,c=!1),f;ce.cancelRequest(Vr),clearTimeout(d),d=setTimeout(()=>{ce.cancelRequest(Vr),t(1,f=new Error("S3 test connection timeout.")),t(2,c=!1)},3e4),t(2,c=!0);let O;try{await ce.settings.testS3(u,{$cancelKey:Vr})}catch(D){O=D}return O!=null&&O.isAbort||(t(1,f=O),t(2,c=!1),clearTimeout(d)),f}Gt(()=>()=>{clearTimeout(d),clearTimeout(m)});function b(){o.enabled=this.checked,t(0,o)}function y(){o.endpoint=this.value,t(0,o)}function S(){o.bucket=this.value,t(0,o)}function C(){o.region=this.value,t(0,o)}function $(){o.accessKey=this.value,t(0,o)}function T(O){n.$$.not_equal(o.secret,O)&&(o.secret=O,t(0,o))}function M(){o.forcePathStyle=this.checked,t(0,o)}return n.$$set=O=>{"originalConfig"in O&&t(5,l=O.originalConfig),"config"in O&&t(0,o=O.config),"configKey"in O&&t(3,r=O.configKey),"toggleLabel"in O&&t(4,a=O.toggleLabel),"testFilesystem"in O&&t(6,u=O.testFilesystem),"testError"in O&&t(1,f=O.testError),"isTesting"in O&&t(2,c=O.isTesting),"$$scope"in O&&t(15,s=O.$$scope)},n.$$.update=()=>{n.$$.dirty&32&&l!=null&&l.enabled&&_(100),n.$$.dirty&9&&(o.enabled||ai(r))},[o,f,c,r,a,l,u,i,b,y,S,C,$,T,M,s]}class O1 extends ge{constructor(e){super(),_e(this,e,wA,kA,me,{originalConfig:5,config:0,configKey:3,toggleLabel:4,testFilesystem:6,testError:1,isTesting:2})}}function SA(n){var O;let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b;function y(D){n[11](D)}function S(D){n[12](D)}function C(D){n[13](D)}let $={toggleLabel:"Use S3 storage",originalConfig:n[0].s3,$$slots:{default:[CA]},$$scope:{ctx:n}};n[1].s3!==void 0&&($.config=n[1].s3),n[4]!==void 0&&($.isTesting=n[4]),n[5]!==void 0&&($.testError=n[5]),e=new O1({props:$}),te.push(()=>de(e,"config",y)),te.push(()=>de(e,"isTesting",S)),te.push(()=>de(e,"testError",C));let T=((O=n[1].s3)==null?void 0:O.enabled)&&!n[6]&&!n[3]&&Hh(n),M=n[6]&&Bh(n);return{c(){H(e.$$.fragment),l=E(),o=v("div"),r=v("div"),a=E(),T&&T.c(),u=E(),M&&M.c(),f=E(),c=v("button"),d=v("span"),d.textContent="Save changes",p(r,"class","flex-fill"),p(d,"class","txt"),p(c,"type","submit"),p(c,"class","btn btn-expanded"),c.disabled=m=!n[6]||n[3],Q(c,"btn-loading",n[3]),p(o,"class","flex")},m(D,L){V(e,D,L),w(D,l,L),w(D,o,L),g(o,r),g(o,a),T&&T.m(o,null),g(o,u),M&&M.m(o,null),g(o,f),g(o,c),g(c,d),_=!0,h||(b=J(c,"click",n[15]),h=!0)},p(D,L){var N;const P={};L&1&&(P.originalConfig=D[0].s3),L&524291&&(P.$$scope={dirty:L,ctx:D}),!t&&L&2&&(t=!0,P.config=D[1].s3,he(()=>t=!1)),!i&&L&16&&(i=!0,P.isTesting=D[4],he(()=>i=!1)),!s&&L&32&&(s=!0,P.testError=D[5],he(()=>s=!1)),e.$set(P),(N=D[1].s3)!=null&&N.enabled&&!D[6]&&!D[3]?T?T.p(D,L):(T=Hh(D),T.c(),T.m(o,u)):T&&(T.d(1),T=null),D[6]?M?M.p(D,L):(M=Bh(D),M.c(),M.m(o,f)):M&&(M.d(1),M=null),(!_||L&72&&m!==(m=!D[6]||D[3]))&&(c.disabled=m),(!_||L&8)&&Q(c,"btn-loading",D[3])},i(D){_||(A(e.$$.fragment,D),_=!0)},o(D){I(e.$$.fragment,D),_=!1},d(D){z(e,D),D&&k(l),D&&k(o),T&&T.d(),M&&M.d(),h=!1,b()}}}function $A(n){let e;return{c(){e=v("div"),p(e,"class","loader")},m(t,i){w(t,e,i)},p:x,i:x,o:x,d(t){t&&k(e)}}}function zh(n){var L;let e,t,i,s,l,o,r,a=(L=n[0].s3)!=null&&L.enabled?"S3 storage":"local file system",u,f,c,d=n[1].s3.enabled?"S3 storage":"local file system",m,_,h,b,y,S,C,$,T,M,O,D;return{c(){e=v("div"),t=v("div"),i=v("div"),i.innerHTML='',s=E(),l=v("div"),o=U(`If you have existing uploaded files, you'll have to migrate them manually from the `),r=v("strong"),u=U(a),f=U(` @@ -222,6 +222,6 @@ Updated: ${b[1].updated}`,position:"left"}),y[0]&536870912&&d!==(d=b[29])&&p(c," `,p(e,"class","list-item list-item-loader svelte-1ulbkf5")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function KI(n){let e,t,i;return{c(){e=v("span"),t=E(),i=v("span"),i.textContent="Backup/restore operation is in process",p(e,"class","loader loader-sm"),p(i,"class","txt")},m(s,l){w(s,e,l),w(s,t,l),w(s,i,l)},d(s){s&&k(e),s&&k(t),s&&k(i)}}}function JI(n){let e,t,i;return{c(){e=v("i"),t=E(),i=v("span"),i.textContent="Initialize new backup",p(e,"class","ri-play-circle-line"),p(i,"class","txt")},m(s,l){w(s,e,l),w(s,t,l),w(s,i,l)},d(s){s&&k(e),s&&k(t),s&&k(i)}}}function ZI(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h;const b=[YI,WI],y=[];function S(D,L){return D[4]?0:1}i=S(n),s=y[i]=b[i](n);function C(D,L){return D[7]?JI:KI}let $=C(n),T=$(n),M={};f=new RI({props:M}),n[14](f),f.$on("submit",n[15]);let O={};return d=new UI({props:O}),n[16](d),{c(){e=v("div"),t=v("div"),s.c(),l=E(),o=v("div"),r=v("button"),T.c(),u=E(),H(f.$$.fragment),c=E(),H(d.$$.fragment),p(t,"class","list-content svelte-1ulbkf5"),p(r,"type","button"),p(r,"class","btn btn-block btn-transparent"),r.disabled=a=n[4]||!n[7],p(o,"class","list-item list-item-btn"),p(e,"class","list list-compact")},m(D,L){w(D,e,L),g(e,t),y[i].m(t,null),g(e,l),g(e,o),g(o,r),T.m(r,null),w(D,u,L),V(f,D,L),w(D,c,L),V(d,D,L),m=!0,_||(h=J(r,"click",n[13]),_=!0)},p(D,[L]){let P=i;i=S(D),i===P?y[i].p(D,L):(ae(),I(y[P],1,1,()=>{y[P]=null}),ue(),s=y[i],s?s.p(D,L):(s=y[i]=b[i](D),s.c()),A(s,1),s.m(t,null)),$!==($=C(D))&&(T.d(1),T=$(D),T&&(T.c(),T.m(r,null))),(!m||L&144&&a!==(a=D[4]||!D[7]))&&(r.disabled=a);const N={};f.$set(N);const F={};d.$set(F)},i(D){m||(A(s),A(f.$$.fragment,D),A(d.$$.fragment,D),m=!0)},o(D){I(s),I(f.$$.fragment,D),I(d.$$.fragment,D),m=!1},d(D){D&&k(e),y[i].d(),T.d(),D&&k(u),n[14](null),z(f,D),D&&k(c),n[16](null),z(d,D),_=!1,h()}}}function GI(n,e,t){let i,s,l=[],o=!1,r={},a={},u=!0;f(),_();async function f(){t(4,o=!0);try{t(3,l=await ce.backups.getFullList()),l.sort((M,O)=>M.modifiedO.modified?-1:0),t(4,o=!1)}catch(M){M.isAbort||(ce.error(M),t(4,o=!1))}}async function c(M){if(!r[M]){t(5,r[M]=!0,r);try{const O=await ce.getAdminFileToken(),D=ce.backups.getDownloadUrl(O,M);B.download(D)}catch(O){O.isAbort||ce.error(O)}delete r[M],t(5,r)}}function d(M){pn(`Do you really want to delete ${M}?`,()=>m(M))}async function m(M){if(!a[M]){t(6,a[M]=!0,a);try{await ce.backups.delete(M),B.removeByKey(l,"name",M),f(),zt(`Successfully deleted ${M}.`)}catch(O){O.isAbort||ce.error(O)}delete a[M],t(6,a)}}async function _(){var M;try{const O=await ce.health.check({$autoCancel:!1}),D=u;t(7,u=((M=O==null?void 0:O.data)==null?void 0:M.canBackup)||!1),D!=u&&u&&f()}catch{}}Gt(()=>{let M=setInterval(()=>{_()},3e3);return()=>{clearInterval(M)}});const h=M=>c(M.key),b=M=>s.show(M.key),y=M=>d(M.key),S=()=>i==null?void 0:i.show();function C(M){te[M?"unshift":"push"](()=>{i=M,t(1,i)})}const $=()=>{f()};function T(M){te[M?"unshift":"push"](()=>{s=M,t(2,s)})}return[f,i,s,l,o,r,a,u,c,d,h,b,y,S,C,$,T]}class XI extends ge{constructor(e){super(),_e(this,e,GI,ZI,me,{loadBackups:0})}get loadBackups(){return this.$$.ctx[0]}}function QI(n){let e;return{c(){e=v("i"),p(e,"class","ri-arrow-down-s-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function xI(n){let e;return{c(){e=v("i"),p(e,"class","ri-arrow-up-s-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function Y_(n){var j,Y,X;let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O;t=new pe({props:{class:"form-field form-field-toggle m-t-base m-b-0",$$slots:{default:[e8,({uniqueId:G})=>({32:G}),({uniqueId:G})=>[0,G?2:0]]},$$scope:{ctx:n}}});let D=n[2]&&K_(n);function L(G){n[25](G)}function P(G){n[26](G)}function N(G){n[27](G)}let F={toggleLabel:"Store backups in S3 storage",testFilesystem:"backups",configKey:"backups.s3",originalConfig:(j=n[0].backups)==null?void 0:j.s3};n[1].backups.s3!==void 0&&(F.config=n[1].backups.s3),n[7]!==void 0&&(F.isTesting=n[7]),n[8]!==void 0&&(F.testError=n[8]),r=new O1({props:F}),te.push(()=>de(r,"config",L)),te.push(()=>de(r,"isTesting",P)),te.push(()=>de(r,"testError",N));let R=((X=(Y=n[1].backups)==null?void 0:Y.s3)==null?void 0:X.enabled)&&!n[9]&&!n[5]&&J_(n),q=n[9]&&Z_(n);return{c(){e=v("form"),H(t.$$.fragment),i=E(),D&&D.c(),s=E(),l=v("div"),o=E(),H(r.$$.fragment),c=E(),d=v("div"),m=v("div"),_=E(),R&&R.c(),h=E(),q&&q.c(),b=E(),y=v("button"),S=v("span"),S.textContent="Save changes",p(l,"class","clearfix m-b-base"),p(m,"class","flex-fill"),p(S,"class","txt"),p(y,"type","submit"),p(y,"class","btn btn-expanded"),y.disabled=C=!n[9]||n[5],Q(y,"btn-loading",n[5]),p(d,"class","flex"),p(e,"class","block"),p(e,"autocomplete","off")},m(G,W){w(G,e,W),V(t,e,null),g(e,i),D&&D.m(e,null),g(e,s),g(e,l),g(e,o),V(r,e,null),g(e,c),g(e,d),g(d,m),g(d,_),R&&R.m(d,null),g(d,h),q&&q.m(d,null),g(d,b),g(d,y),g(y,S),T=!0,M||(O=[J(y,"click",n[29]),J(e,"submit",et(n[11]))],M=!0)},p(G,W){var ie,be,Se;const le={};W[0]&4|W[1]&6&&(le.$$scope={dirty:W,ctx:G}),t.$set(le),G[2]?D?(D.p(G,W),W[0]&4&&A(D,1)):(D=K_(G),D.c(),A(D,1),D.m(e,s)):D&&(ae(),I(D,1,1,()=>{D=null}),ue());const ee={};W[0]&1&&(ee.originalConfig=(ie=G[0].backups)==null?void 0:ie.s3),!a&&W[0]&2&&(a=!0,ee.config=G[1].backups.s3,he(()=>a=!1)),!u&&W[0]&128&&(u=!0,ee.isTesting=G[7],he(()=>u=!1)),!f&&W[0]&256&&(f=!0,ee.testError=G[8],he(()=>f=!1)),r.$set(ee),(Se=(be=G[1].backups)==null?void 0:be.s3)!=null&&Se.enabled&&!G[9]&&!G[5]?R?R.p(G,W):(R=J_(G),R.c(),R.m(d,h)):R&&(R.d(1),R=null),G[9]?q?q.p(G,W):(q=Z_(G),q.c(),q.m(d,b)):q&&(q.d(1),q=null),(!T||W[0]&544&&C!==(C=!G[9]||G[5]))&&(y.disabled=C),(!T||W[0]&32)&&Q(y,"btn-loading",G[5])},i(G){T||(A(t.$$.fragment,G),A(D),A(r.$$.fragment,G),G&&Qe(()=>{T&&($||($=je(e,ot,{duration:150},!0)),$.run(1))}),T=!0)},o(G){I(t.$$.fragment,G),I(D),I(r.$$.fragment,G),G&&($||($=je(e,ot,{duration:150},!1)),$.run(0)),T=!1},d(G){G&&k(e),z(t),D&&D.d(),z(r),R&&R.d(),q&&q.d(),G&&$&&$.end(),M=!1,Ee(O)}}}function e8(n){let e,t,i,s,l,o,r,a;return{c(){e=v("input"),i=E(),s=v("label"),l=U("Enable auto backups"),p(e,"type","checkbox"),p(e,"id",t=n[32]),e.required=!0,p(s,"for",o=n[32])},m(u,f){w(u,e,f),e.checked=n[2],w(u,i,f),w(u,s,f),g(s,l),r||(a=J(e,"change",n[18]),r=!0)},p(u,f){f[1]&2&&t!==(t=u[32])&&p(e,"id",t),f[0]&4&&(e.checked=u[2]),f[1]&2&&o!==(o=u[32])&&p(s,"for",o)},d(u){u&&k(e),u&&k(i),u&&k(s),r=!1,a()}}}function K_(n){let e,t,i,s,l,o,r,a,u;return s=new pe({props:{class:"form-field required",name:"backups.cron",$$slots:{default:[n8,({uniqueId:f})=>({32:f}),({uniqueId:f})=>[0,f?2:0]]},$$scope:{ctx:n}}}),r=new pe({props:{class:"form-field required",name:"backups.cronMaxKeep",$$slots:{default:[i8,({uniqueId:f})=>({32:f}),({uniqueId:f})=>[0,f?2:0]]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),i=v("div"),H(s.$$.fragment),l=E(),o=v("div"),H(r.$$.fragment),p(i,"class","col-lg-6"),p(o,"class","col-lg-6"),p(t,"class","grid p-t-base p-b-sm"),p(e,"class","block")},m(f,c){w(f,e,c),g(e,t),g(t,i),V(s,i,null),g(t,l),g(t,o),V(r,o,null),u=!0},p(f,c){const d={};c[0]&3|c[1]&6&&(d.$$scope={dirty:c,ctx:f}),s.$set(d);const m={};c[0]&2|c[1]&6&&(m.$$scope={dirty:c,ctx:f}),r.$set(m)},i(f){u||(A(s.$$.fragment,f),A(r.$$.fragment,f),f&&Qe(()=>{u&&(a||(a=je(e,ot,{duration:150},!0)),a.run(1))}),u=!0)},o(f){I(s.$$.fragment,f),I(r.$$.fragment,f),f&&(a||(a=je(e,ot,{duration:150},!1)),a.run(0)),u=!1},d(f){f&&k(e),z(s),z(r),f&&a&&a.end()}}}function t8(n){let e,t,i,s,l,o,r,a,u;return{c(){e=v("button"),e.innerHTML='Every day at 00:00h',t=E(),i=v("button"),i.innerHTML='Every sunday at 00:00h',s=E(),l=v("button"),l.innerHTML='Every Mon and Wed at 00:00h',o=E(),r=v("button"),r.innerHTML='Every first day of the month at 00:00h',p(e,"type","button"),p(e,"class","dropdown-item closable"),p(i,"type","button"),p(i,"class","dropdown-item closable"),p(l,"type","button"),p(l,"class","dropdown-item closable"),p(r,"type","button"),p(r,"class","dropdown-item closable")},m(f,c){w(f,e,c),w(f,t,c),w(f,i,c),w(f,s,c),w(f,l,c),w(f,o,c),w(f,r,c),a||(u=[J(e,"click",n[20]),J(i,"click",n[21]),J(l,"click",n[22]),J(r,"click",n[23])],a=!0)},p:x,d(f){f&&k(e),f&&k(t),f&&k(i),f&&k(s),f&&k(l),f&&k(o),f&&k(r),a=!1,Ee(u)}}}function n8(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$;return h=new Kn({props:{class:"dropdown dropdown-nowrap dropdown-right",$$slots:{default:[t8]},$$scope:{ctx:n}}}),{c(){var T,M;e=v("label"),t=U("Cron expression"),s=E(),l=v("input"),a=E(),u=v("div"),f=v("button"),c=v("span"),c.textContent="Presets",d=E(),m=v("i"),_=E(),H(h.$$.fragment),b=E(),y=v("div"),y.innerHTML=`

    Supports numeric list, steps and ranges. The timezone is in UTC.

    `,p(e,"for",i=n[32]),l.required=!0,p(l,"type","text"),p(l,"id",o=n[32]),p(l,"class","txt-lg txt-mono"),p(l,"placeholder","* * * * *"),l.autofocus=r=!((M=(T=n[0])==null?void 0:T.backups)!=null&&M.cron),p(c,"class","txt"),p(m,"class","ri-arrow-drop-down-fill"),p(f,"type","button"),p(f,"class","btn btn-sm btn-outline p-r-0"),p(u,"class","form-field-addon"),p(y,"class","help-block")},m(T,M){var O,D;w(T,e,M),g(e,t),w(T,s,M),w(T,l,M),re(l,n[1].backups.cron),w(T,a,M),w(T,u,M),g(u,f),g(f,c),g(f,d),g(f,m),g(f,_),V(h,f,null),w(T,b,M),w(T,y,M),S=!0,(D=(O=n[0])==null?void 0:O.backups)!=null&&D.cron||l.focus(),C||($=J(l,"input",n[19]),C=!0)},p(T,M){var D,L;(!S||M[1]&2&&i!==(i=T[32]))&&p(e,"for",i),(!S||M[1]&2&&o!==(o=T[32]))&&p(l,"id",o),(!S||M[0]&1&&r!==(r=!((L=(D=T[0])==null?void 0:D.backups)!=null&&L.cron)))&&(l.autofocus=r),M[0]&2&&l.value!==T[1].backups.cron&&re(l,T[1].backups.cron);const O={};M[0]&2|M[1]&4&&(O.$$scope={dirty:M,ctx:T}),h.$set(O)},i(T){S||(A(h.$$.fragment,T),S=!0)},o(T){I(h.$$.fragment,T),S=!1},d(T){T&&k(e),T&&k(s),T&&k(l),T&&k(a),T&&k(u),z(h),T&&k(b),T&&k(y),C=!1,$()}}}function i8(n){let e,t,i,s,l,o,r,a;return{c(){e=v("label"),t=U("Max @auto backups to keep"),s=E(),l=v("input"),p(e,"for",i=n[32]),p(l,"type","number"),p(l,"id",o=n[32]),p(l,"min","1")},m(u,f){w(u,e,f),g(e,t),w(u,s,f),w(u,l,f),re(l,n[1].backups.cronMaxKeep),r||(a=J(l,"input",n[24]),r=!0)},p(u,f){f[1]&2&&i!==(i=u[32])&&p(e,"for",i),f[1]&2&&o!==(o=u[32])&&p(l,"id",o),f[0]&2&&dt(l.value)!==u[1].backups.cronMaxKeep&&re(l,u[1].backups.cronMaxKeep)},d(u){u&&k(e),u&&k(s),u&&k(l),r=!1,a()}}}function J_(n){let e;function t(l,o){return l[7]?o8:l[8]?l8:s8}let i=t(n),s=i(n);return{c(){s.c(),e=ye()},m(l,o){s.m(l,o),w(l,e,o)},p(l,o){i===(i=t(l))&&s?s.p(l,o):(s.d(1),s=i(l),s&&(s.c(),s.m(e.parentNode,e)))},d(l){s.d(l),l&&k(e)}}}function s8(n){let e;return{c(){e=v("div"),e.innerHTML=` S3 connected successfully`,p(e,"class","label label-sm label-success entrance-right")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function l8(n){let e,t,i,s;return{c(){e=v("div"),e.innerHTML=` - Failed to establish S3 connection`,p(e,"class","label label-sm label-warning entrance-right")},m(l,o){var r;w(l,e,o),i||(s=Me(t=He.call(null,e,(r=n[8].data)==null?void 0:r.message)),i=!0)},p(l,o){var r;t&&jt(t.update)&&o[0]&256&&t.update.call(null,(r=l[8].data)==null?void 0:r.message)},d(l){l&&k(e),i=!1,s()}}}function o8(n){let e;return{c(){e=v("span"),p(e,"class","loader loader-sm")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function Z_(n){let e,t,i,s,l;return{c(){e=v("button"),t=v("span"),t.textContent="Reset",p(t,"class","txt"),p(e,"type","submit"),p(e,"class","btn btn-hint btn-transparent"),e.disabled=i=!n[9]||n[5]},m(o,r){w(o,e,r),g(e,t),s||(l=J(e,"click",n[28]),s=!0)},p(o,r){r[0]&544&&i!==(i=!o[9]||o[5])&&(e.disabled=i)},d(o){o&&k(e),s=!1,l()}}}function r8(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L;m=new Go({props:{class:"btn-sm",tooltip:"Reload backups list"}}),m.$on("refresh",n[15]);let P={};h=new XI({props:P}),n[16](h);function N(j,Y){return j[6]?xI:QI}let F=N(n),R=F(n),q=n[6]&&!n[4]&&Y_(n);return{c(){e=v("header"),t=v("nav"),i=v("div"),i.textContent="Settings",s=E(),l=v("div"),o=U(n[10]),r=E(),a=v("div"),u=v("div"),f=v("div"),c=v("span"),c.textContent="Backup and restore your PocketBase data",d=E(),H(m.$$.fragment),_=E(),H(h.$$.fragment),b=E(),y=v("hr"),S=E(),C=v("button"),$=v("span"),$.textContent="Backups options",T=E(),R.c(),M=E(),q&&q.c(),p(i,"class","breadcrumb-item"),p(l,"class","breadcrumb-item"),p(t,"class","breadcrumbs"),p(e,"class","page-header"),p(c,"class","txt-xl"),p(f,"class","flex m-b-sm flex-gap-5"),p($,"class","txt"),p(C,"type","button"),p(C,"class","btn btn-secondary"),C.disabled=n[4],Q(C,"btn-loading",n[4]),p(u,"class","panel"),p(u,"autocomplete","off"),p(a,"class","wrapper")},m(j,Y){w(j,e,Y),g(e,t),g(t,i),g(t,s),g(t,l),g(l,o),w(j,r,Y),w(j,a,Y),g(a,u),g(u,f),g(f,c),g(f,d),V(m,f,null),g(u,_),V(h,u,null),g(u,b),g(u,y),g(u,S),g(u,C),g(C,$),g(C,T),R.m(C,null),g(u,M),q&&q.m(u,null),O=!0,D||(L=[J(C,"click",n[17]),J(u,"submit",et(n[11]))],D=!0)},p(j,Y){(!O||Y[0]&1024)&&se(o,j[10]);const X={};h.$set(X),F!==(F=N(j))&&(R.d(1),R=F(j),R&&(R.c(),R.m(C,null))),(!O||Y[0]&16)&&(C.disabled=j[4]),(!O||Y[0]&16)&&Q(C,"btn-loading",j[4]),j[6]&&!j[4]?q?(q.p(j,Y),Y[0]&80&&A(q,1)):(q=Y_(j),q.c(),A(q,1),q.m(u,null)):q&&(ae(),I(q,1,1,()=>{q=null}),ue())},i(j){O||(A(m.$$.fragment,j),A(h.$$.fragment,j),A(q),O=!0)},o(j){I(m.$$.fragment,j),I(h.$$.fragment,j),I(q),O=!1},d(j){j&&k(e),j&&k(r),j&&k(a),z(m),n[16](null),z(h),R.d(),q&&q.d(),D=!1,Ee(L)}}}function a8(n){let e,t,i,s;return e=new Ci({}),i=new wn({props:{$$slots:{default:[r8]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment)},m(l,o){V(e,l,o),w(l,t,o),V(i,l,o),s=!0},p(l,o){const r={};o[0]&2047|o[1]&4&&(r.$$scope={dirty:o,ctx:l}),i.$set(r)},i(l){s||(A(e.$$.fragment,l),A(i.$$.fragment,l),s=!0)},o(l){I(e.$$.fragment,l),I(i.$$.fragment,l),s=!1},d(l){z(e,l),l&&k(t),z(i,l)}}}function u8(n,e,t){let i,s;Je(n,Tt,W=>t(10,s=W)),sn(Tt,s="Backups",s);let l,o={},r={},a=!1,u=!1,f="",c=!1,d=!1,m=!1,_=null;h();async function h(){t(4,a=!0);try{const W=await ce.settings.getAll()||{};y(W)}catch(W){ce.error(W)}t(4,a=!1)}async function b(){if(!(u||!i)){t(5,u=!0);try{const W=await ce.settings.update(B.filterRedactedProps(r));await C(),y(W),zt("Successfully saved application settings.")}catch(W){ce.error(W)}t(5,u=!1)}}function y(W={}){t(1,r={backups:(W==null?void 0:W.backups)||{}}),t(2,c=r.backups.cron!=""),t(0,o=JSON.parse(JSON.stringify(r)))}function S(){t(1,r=JSON.parse(JSON.stringify(o||{backups:{}}))),t(2,c=r.backups.cron!="")}async function C(){await(l==null?void 0:l.loadBackups())}const $=()=>C();function T(W){te[W?"unshift":"push"](()=>{l=W,t(3,l)})}const M=()=>t(6,d=!d);function O(){c=this.checked,t(2,c)}function D(){r.backups.cron=this.value,t(1,r),t(2,c)}const L=()=>{t(1,r.backups.cron="0 0 * * *",r)},P=()=>{t(1,r.backups.cron="0 0 * * 0",r)},N=()=>{t(1,r.backups.cron="0 0 * * 1,3",r)},F=()=>{t(1,r.backups.cron="0 0 1 * *",r)};function R(){r.backups.cronMaxKeep=dt(this.value),t(1,r),t(2,c)}function q(W){n.$$.not_equal(r.backups.s3,W)&&(r.backups.s3=W,t(1,r),t(2,c))}function j(W){m=W,t(7,m)}function Y(W){_=W,t(8,_)}const X=()=>S(),G=()=>b();return n.$$.update=()=>{var W;n.$$.dirty[0]&1&&t(14,f=JSON.stringify(o)),n.$$.dirty[0]&6&&!c&&(W=r==null?void 0:r.backups)!=null&&W.cron&&(ai("backups.cron"),t(1,r.backups.cron="",r)),n.$$.dirty[0]&16386&&t(9,i=f!=JSON.stringify(r))},[o,r,c,l,a,u,d,m,_,i,s,b,S,C,f,$,T,M,O,D,L,P,N,F,R,q,j,Y,X,G]}class f8 extends ge{constructor(e){super(),_e(this,e,u8,a8,me,{},null,[-1,-1])}}const Vt=[async n=>{const e=new URLSearchParams(window.location.search);return n.location!=="/"&&e.has("installer")?ji("/"):!0}],c8={"/login":Lt({component:bD,conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/request-password-reset":Lt({asyncComponent:()=>at(()=>import("./PageAdminRequestPasswordReset-3bd34818.js"),[],import.meta.url),conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageAdminConfirmPasswordReset-1c4c6f99.js"),[],import.meta.url),conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/collections":Lt({component:HE,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/logs":Lt({component:N$,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings":Lt({component:OD,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/admins":Lt({component:dD,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/mail":Lt({component:dA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/storage":Lt({component:LA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/auth-providers":Lt({component:GA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/tokens":Lt({component:lI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/export-collections":Lt({component:cI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/import-collections":Lt({component:DI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/backups":Lt({component:f8,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/users/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmPasswordReset-6b9ed1dd.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmPasswordReset-6b9ed1dd.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/users/confirm-verification/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmVerification-a9a3ce04.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-verification/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmVerification-a9a3ce04.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/users/confirm-email-change/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmEmailChange-d7c4b499.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-email-change/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmEmailChange-d7c4b499.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/oauth2-redirect":Lt({asyncComponent:()=>at(()=>import("./PageOAuth2Redirect-358d18df.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"*":Lt({component:nk,userData:{showAppSidebar:!1}})};function d8(n,{from:e,to:t},i={}){const s=getComputedStyle(n),l=s.transform==="none"?"":s.transform,[o,r]=s.transformOrigin.split(" ").map(parseFloat),a=e.left+e.width*o/t.width-(t.left+o),u=e.top+e.height*r/t.height-(t.top+r),{delay:f=0,duration:c=m=>Math.sqrt(m)*120,easing:d=Jo}=i;return{delay:f,duration:jt(c)?c(Math.sqrt(a*a+u*u)):c,easing:d,css:(m,_)=>{const h=_*a,b=_*u,y=m+_*e.width/t.width,S=m+_*e.height/t.height;return`transform: ${l} translate(${h}px, ${b}px) scale(${y}, ${S});`}}}function G_(n,e,t){const i=n.slice();return i[2]=e[t],i}function p8(n){let e;return{c(){e=v("i"),p(e,"class","ri-alert-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function m8(n){let e;return{c(){e=v("i"),p(e,"class","ri-error-warning-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function h8(n){let e;return{c(){e=v("i"),p(e,"class","ri-checkbox-circle-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function _8(n){let e;return{c(){e=v("i"),p(e,"class","ri-information-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function X_(n,e){let t,i,s,l,o=e[2].message+"",r,a,u,f,c,d,m,_=x,h,b,y;function S(M,O){return M[2].type==="info"?_8:M[2].type==="success"?h8:M[2].type==="warning"?m8:p8}let C=S(e),$=C(e);function T(){return e[1](e[2])}return{key:n,first:null,c(){t=v("div"),i=v("div"),$.c(),s=E(),l=v("div"),r=U(o),a=E(),u=v("button"),u.innerHTML='',f=E(),p(i,"class","icon"),p(l,"class","content"),p(u,"type","button"),p(u,"class","close"),p(t,"class","alert txt-break"),Q(t,"alert-info",e[2].type=="info"),Q(t,"alert-success",e[2].type=="success"),Q(t,"alert-danger",e[2].type=="error"),Q(t,"alert-warning",e[2].type=="warning"),this.first=t},m(M,O){w(M,t,O),g(t,i),$.m(i,null),g(t,s),g(t,l),g(l,r),g(t,a),g(t,u),g(t,f),h=!0,b||(y=J(u,"click",et(T)),b=!0)},p(M,O){e=M,C!==(C=S(e))&&($.d(1),$=C(e),$&&($.c(),$.m(i,null))),(!h||O&1)&&o!==(o=e[2].message+"")&&se(r,o),(!h||O&1)&&Q(t,"alert-info",e[2].type=="info"),(!h||O&1)&&Q(t,"alert-success",e[2].type=="success"),(!h||O&1)&&Q(t,"alert-danger",e[2].type=="error"),(!h||O&1)&&Q(t,"alert-warning",e[2].type=="warning")},r(){m=t.getBoundingClientRect()},f(){Q1(t),_(),og(t,m)},a(){_(),_=X1(t,m,d8,{duration:150})},i(M){h||(Qe(()=>{h&&(d&&d.end(1),c=ug(t,ot,{duration:150}),c.start())}),h=!0)},o(M){c&&c.invalidate(),d=$a(t,ta,{duration:150}),h=!1},d(M){M&&k(t),$.d(),M&&d&&d.end(),b=!1,y()}}}function g8(n){let e,t=[],i=new Map,s,l=n[0];const o=r=>r[2].message;for(let r=0;rt(0,i=l)),[i,l=>gb(l)]}class v8 extends ge{constructor(e){super(),_e(this,e,b8,g8,me,{})}}function y8(n){var s;let e,t=((s=n[1])==null?void 0:s.text)+"",i;return{c(){e=v("h4"),i=U(t),p(e,"class","block center txt-break"),p(e,"slot","header")},m(l,o){w(l,e,o),g(e,i)},p(l,o){var r;o&2&&t!==(t=((r=l[1])==null?void 0:r.text)+"")&&se(i,t)},d(l){l&&k(e)}}}function k8(n){let e,t,i,s,l,o,r;return{c(){e=v("button"),t=v("span"),t.textContent="No",i=E(),s=v("button"),l=v("span"),l.textContent="Yes",p(t,"class","txt"),e.autofocus=!0,p(e,"type","button"),p(e,"class","btn btn-transparent btn-expanded-sm"),e.disabled=n[2],p(l,"class","txt"),p(s,"type","button"),p(s,"class","btn btn-danger btn-expanded"),s.disabled=n[2],Q(s,"btn-loading",n[2])},m(a,u){w(a,e,u),g(e,t),w(a,i,u),w(a,s,u),g(s,l),e.focus(),o||(r=[J(e,"click",n[4]),J(s,"click",n[5])],o=!0)},p(a,u){u&4&&(e.disabled=a[2]),u&4&&(s.disabled=a[2]),u&4&&Q(s,"btn-loading",a[2])},d(a){a&&k(e),a&&k(i),a&&k(s),o=!1,Ee(r)}}}function w8(n){let e,t,i={class:"confirm-popup hide-content overlay-panel-sm",overlayClose:!n[2],escClose:!n[2],btnClose:!1,popup:!0,$$slots:{footer:[k8],header:[y8]},$$scope:{ctx:n}};return e=new ln({props:i}),n[6](e),e.$on("hide",n[7]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&4&&(o.overlayClose=!s[2]),l&4&&(o.escClose=!s[2]),l&271&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[6](null),z(e,s)}}}function S8(n,e,t){let i;Je(n,au,c=>t(1,i=c));let s,l=!1,o=!1;const r=()=>{t(3,o=!1),s==null||s.hide()},a=async()=>{i!=null&&i.yesCallback&&(t(2,l=!0),await Promise.resolve(i.yesCallback()),t(2,l=!1)),t(3,o=!0),s==null||s.hide()};function u(c){te[c?"unshift":"push"](()=>{s=c,t(0,s)})}const f=async()=>{!o&&(i!=null&&i.noCallback)&&i.noCallback(),await fn(),t(3,o=!1),k1()};return n.$$.update=()=>{n.$$.dirty&3&&i!=null&&i.text&&(t(3,o=!1),s==null||s.show())},[s,i,l,o,r,a,u,f]}class $8 extends ge{constructor(e){super(),_e(this,e,S8,w8,me,{})}}function Q_(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S;return h=new Kn({props:{class:"dropdown dropdown-nowrap dropdown-upside dropdown-left",$$slots:{default:[C8]},$$scope:{ctx:n}}}),{c(){var C;e=v("aside"),t=v("a"),t.innerHTML='PocketBase logo',i=E(),s=v("nav"),l=v("a"),l.innerHTML='',o=E(),r=v("a"),r.innerHTML='',a=E(),u=v("a"),u.innerHTML='',f=E(),c=v("figure"),d=v("img"),_=E(),H(h.$$.fragment),p(t,"href","/"),p(t,"class","logo logo-sm"),p(l,"href","/collections"),p(l,"class","menu-item"),p(l,"aria-label","Collections"),p(r,"href","/logs"),p(r,"class","menu-item"),p(r,"aria-label","Logs"),p(u,"href","/settings"),p(u,"class","menu-item"),p(u,"aria-label","Settings"),p(s,"class","main-menu"),hn(d.src,m="./images/avatars/avatar"+(((C=n[0])==null?void 0:C.avatar)||0)+".svg")||p(d,"src",m),p(d,"alt","Avatar"),p(c,"class","thumb thumb-circle link-hint closable"),p(e,"class","app-sidebar")},m(C,$){w(C,e,$),g(e,t),g(e,i),g(e,s),g(s,l),g(s,o),g(s,r),g(s,a),g(s,u),g(e,f),g(e,c),g(c,d),g(c,_),V(h,c,null),b=!0,y||(S=[Me(on.call(null,t)),Me(on.call(null,l)),Me(Vn.call(null,l,{path:"/collections/?.*",className:"current-route"})),Me(He.call(null,l,{text:"Collections",position:"right"})),Me(on.call(null,r)),Me(Vn.call(null,r,{path:"/logs/?.*",className:"current-route"})),Me(He.call(null,r,{text:"Logs",position:"right"})),Me(on.call(null,u)),Me(Vn.call(null,u,{path:"/settings/?.*",className:"current-route"})),Me(He.call(null,u,{text:"Settings",position:"right"}))],y=!0)},p(C,$){var M;(!b||$&1&&!hn(d.src,m="./images/avatars/avatar"+(((M=C[0])==null?void 0:M.avatar)||0)+".svg"))&&p(d,"src",m);const T={};$&4096&&(T.$$scope={dirty:$,ctx:C}),h.$set(T)},i(C){b||(A(h.$$.fragment,C),b=!0)},o(C){I(h.$$.fragment,C),b=!1},d(C){C&&k(e),z(h),y=!1,Ee(S)}}}function C8(n){let e,t,i,s,l,o,r;return{c(){e=v("a"),e.innerHTML=` + Failed to establish S3 connection`,p(e,"class","label label-sm label-warning entrance-right")},m(l,o){var r;w(l,e,o),i||(s=Me(t=He.call(null,e,(r=n[8].data)==null?void 0:r.message)),i=!0)},p(l,o){var r;t&&jt(t.update)&&o[0]&256&&t.update.call(null,(r=l[8].data)==null?void 0:r.message)},d(l){l&&k(e),i=!1,s()}}}function o8(n){let e;return{c(){e=v("span"),p(e,"class","loader loader-sm")},m(t,i){w(t,e,i)},p:x,d(t){t&&k(e)}}}function Z_(n){let e,t,i,s,l;return{c(){e=v("button"),t=v("span"),t.textContent="Reset",p(t,"class","txt"),p(e,"type","submit"),p(e,"class","btn btn-hint btn-transparent"),e.disabled=i=!n[9]||n[5]},m(o,r){w(o,e,r),g(e,t),s||(l=J(e,"click",n[28]),s=!0)},p(o,r){r[0]&544&&i!==(i=!o[9]||o[5])&&(e.disabled=i)},d(o){o&&k(e),s=!1,l()}}}function r8(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S,C,$,T,M,O,D,L;m=new Go({props:{class:"btn-sm",tooltip:"Reload backups list"}}),m.$on("refresh",n[15]);let P={};h=new XI({props:P}),n[16](h);function N(j,Y){return j[6]?xI:QI}let F=N(n),R=F(n),q=n[6]&&!n[4]&&Y_(n);return{c(){e=v("header"),t=v("nav"),i=v("div"),i.textContent="Settings",s=E(),l=v("div"),o=U(n[10]),r=E(),a=v("div"),u=v("div"),f=v("div"),c=v("span"),c.textContent="Backup and restore your PocketBase data",d=E(),H(m.$$.fragment),_=E(),H(h.$$.fragment),b=E(),y=v("hr"),S=E(),C=v("button"),$=v("span"),$.textContent="Backups options",T=E(),R.c(),M=E(),q&&q.c(),p(i,"class","breadcrumb-item"),p(l,"class","breadcrumb-item"),p(t,"class","breadcrumbs"),p(e,"class","page-header"),p(c,"class","txt-xl"),p(f,"class","flex m-b-sm flex-gap-5"),p($,"class","txt"),p(C,"type","button"),p(C,"class","btn btn-secondary"),C.disabled=n[4],Q(C,"btn-loading",n[4]),p(u,"class","panel"),p(u,"autocomplete","off"),p(a,"class","wrapper")},m(j,Y){w(j,e,Y),g(e,t),g(t,i),g(t,s),g(t,l),g(l,o),w(j,r,Y),w(j,a,Y),g(a,u),g(u,f),g(f,c),g(f,d),V(m,f,null),g(u,_),V(h,u,null),g(u,b),g(u,y),g(u,S),g(u,C),g(C,$),g(C,T),R.m(C,null),g(u,M),q&&q.m(u,null),O=!0,D||(L=[J(C,"click",n[17]),J(u,"submit",et(n[11]))],D=!0)},p(j,Y){(!O||Y[0]&1024)&&se(o,j[10]);const X={};h.$set(X),F!==(F=N(j))&&(R.d(1),R=F(j),R&&(R.c(),R.m(C,null))),(!O||Y[0]&16)&&(C.disabled=j[4]),(!O||Y[0]&16)&&Q(C,"btn-loading",j[4]),j[6]&&!j[4]?q?(q.p(j,Y),Y[0]&80&&A(q,1)):(q=Y_(j),q.c(),A(q,1),q.m(u,null)):q&&(ae(),I(q,1,1,()=>{q=null}),ue())},i(j){O||(A(m.$$.fragment,j),A(h.$$.fragment,j),A(q),O=!0)},o(j){I(m.$$.fragment,j),I(h.$$.fragment,j),I(q),O=!1},d(j){j&&k(e),j&&k(r),j&&k(a),z(m),n[16](null),z(h),R.d(),q&&q.d(),D=!1,Ee(L)}}}function a8(n){let e,t,i,s;return e=new Ci({}),i=new wn({props:{$$slots:{default:[r8]},$$scope:{ctx:n}}}),{c(){H(e.$$.fragment),t=E(),H(i.$$.fragment)},m(l,o){V(e,l,o),w(l,t,o),V(i,l,o),s=!0},p(l,o){const r={};o[0]&2047|o[1]&4&&(r.$$scope={dirty:o,ctx:l}),i.$set(r)},i(l){s||(A(e.$$.fragment,l),A(i.$$.fragment,l),s=!0)},o(l){I(e.$$.fragment,l),I(i.$$.fragment,l),s=!1},d(l){z(e,l),l&&k(t),z(i,l)}}}function u8(n,e,t){let i,s;Je(n,Tt,W=>t(10,s=W)),sn(Tt,s="Backups",s);let l,o={},r={},a=!1,u=!1,f="",c=!1,d=!1,m=!1,_=null;h();async function h(){t(4,a=!0);try{const W=await ce.settings.getAll()||{};y(W)}catch(W){ce.error(W)}t(4,a=!1)}async function b(){if(!(u||!i)){t(5,u=!0);try{const W=await ce.settings.update(B.filterRedactedProps(r));await C(),y(W),zt("Successfully saved application settings.")}catch(W){ce.error(W)}t(5,u=!1)}}function y(W={}){t(1,r={backups:(W==null?void 0:W.backups)||{}}),t(2,c=r.backups.cron!=""),t(0,o=JSON.parse(JSON.stringify(r)))}function S(){t(1,r=JSON.parse(JSON.stringify(o||{backups:{}}))),t(2,c=r.backups.cron!="")}async function C(){await(l==null?void 0:l.loadBackups())}const $=()=>C();function T(W){te[W?"unshift":"push"](()=>{l=W,t(3,l)})}const M=()=>t(6,d=!d);function O(){c=this.checked,t(2,c)}function D(){r.backups.cron=this.value,t(1,r),t(2,c)}const L=()=>{t(1,r.backups.cron="0 0 * * *",r)},P=()=>{t(1,r.backups.cron="0 0 * * 0",r)},N=()=>{t(1,r.backups.cron="0 0 * * 1,3",r)},F=()=>{t(1,r.backups.cron="0 0 1 * *",r)};function R(){r.backups.cronMaxKeep=dt(this.value),t(1,r),t(2,c)}function q(W){n.$$.not_equal(r.backups.s3,W)&&(r.backups.s3=W,t(1,r),t(2,c))}function j(W){m=W,t(7,m)}function Y(W){_=W,t(8,_)}const X=()=>S(),G=()=>b();return n.$$.update=()=>{var W;n.$$.dirty[0]&1&&t(14,f=JSON.stringify(o)),n.$$.dirty[0]&6&&!c&&(W=r==null?void 0:r.backups)!=null&&W.cron&&(ai("backups.cron"),t(1,r.backups.cron="",r)),n.$$.dirty[0]&16386&&t(9,i=f!=JSON.stringify(r))},[o,r,c,l,a,u,d,m,_,i,s,b,S,C,f,$,T,M,O,D,L,P,N,F,R,q,j,Y,X,G]}class f8 extends ge{constructor(e){super(),_e(this,e,u8,a8,me,{},null,[-1,-1])}}const Vt=[async n=>{const e=new URLSearchParams(window.location.search);return n.location!=="/"&&e.has("installer")?ji("/"):!0}],c8={"/login":Lt({component:bD,conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/request-password-reset":Lt({asyncComponent:()=>at(()=>import("./PageAdminRequestPasswordReset-47c28d06.js"),[],import.meta.url),conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageAdminConfirmPasswordReset-6d6ca8f2.js"),[],import.meta.url),conditions:Vt.concat([n=>!ce.authStore.isValid]),userData:{showAppSidebar:!1}}),"/collections":Lt({component:HE,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/logs":Lt({component:N$,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings":Lt({component:OD,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/admins":Lt({component:dD,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/mail":Lt({component:dA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/storage":Lt({component:LA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/auth-providers":Lt({component:GA,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/tokens":Lt({component:lI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/export-collections":Lt({component:cI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/import-collections":Lt({component:DI,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/settings/backups":Lt({component:f8,conditions:Vt.concat([n=>ce.authStore.isValid]),userData:{showAppSidebar:!0}}),"/users/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmPasswordReset-e98c3e9b.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-password-reset/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmPasswordReset-e98c3e9b.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/users/confirm-verification/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmVerification-cb062b13.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-verification/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmVerification-cb062b13.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/users/confirm-email-change/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmEmailChange-4d744f8a.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/confirm-email-change/:token":Lt({asyncComponent:()=>at(()=>import("./PageRecordConfirmEmailChange-4d744f8a.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"/auth/oauth2-redirect":Lt({asyncComponent:()=>at(()=>import("./PageOAuth2Redirect-747e1d69.js"),[],import.meta.url),conditions:Vt,userData:{showAppSidebar:!1}}),"*":Lt({component:nk,userData:{showAppSidebar:!1}})};function d8(n,{from:e,to:t},i={}){const s=getComputedStyle(n),l=s.transform==="none"?"":s.transform,[o,r]=s.transformOrigin.split(" ").map(parseFloat),a=e.left+e.width*o/t.width-(t.left+o),u=e.top+e.height*r/t.height-(t.top+r),{delay:f=0,duration:c=m=>Math.sqrt(m)*120,easing:d=Jo}=i;return{delay:f,duration:jt(c)?c(Math.sqrt(a*a+u*u)):c,easing:d,css:(m,_)=>{const h=_*a,b=_*u,y=m+_*e.width/t.width,S=m+_*e.height/t.height;return`transform: ${l} translate(${h}px, ${b}px) scale(${y}, ${S});`}}}function G_(n,e,t){const i=n.slice();return i[2]=e[t],i}function p8(n){let e;return{c(){e=v("i"),p(e,"class","ri-alert-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function m8(n){let e;return{c(){e=v("i"),p(e,"class","ri-error-warning-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function h8(n){let e;return{c(){e=v("i"),p(e,"class","ri-checkbox-circle-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function _8(n){let e;return{c(){e=v("i"),p(e,"class","ri-information-line")},m(t,i){w(t,e,i)},d(t){t&&k(e)}}}function X_(n,e){let t,i,s,l,o=e[2].message+"",r,a,u,f,c,d,m,_=x,h,b,y;function S(M,O){return M[2].type==="info"?_8:M[2].type==="success"?h8:M[2].type==="warning"?m8:p8}let C=S(e),$=C(e);function T(){return e[1](e[2])}return{key:n,first:null,c(){t=v("div"),i=v("div"),$.c(),s=E(),l=v("div"),r=U(o),a=E(),u=v("button"),u.innerHTML='',f=E(),p(i,"class","icon"),p(l,"class","content"),p(u,"type","button"),p(u,"class","close"),p(t,"class","alert txt-break"),Q(t,"alert-info",e[2].type=="info"),Q(t,"alert-success",e[2].type=="success"),Q(t,"alert-danger",e[2].type=="error"),Q(t,"alert-warning",e[2].type=="warning"),this.first=t},m(M,O){w(M,t,O),g(t,i),$.m(i,null),g(t,s),g(t,l),g(l,r),g(t,a),g(t,u),g(t,f),h=!0,b||(y=J(u,"click",et(T)),b=!0)},p(M,O){e=M,C!==(C=S(e))&&($.d(1),$=C(e),$&&($.c(),$.m(i,null))),(!h||O&1)&&o!==(o=e[2].message+"")&&se(r,o),(!h||O&1)&&Q(t,"alert-info",e[2].type=="info"),(!h||O&1)&&Q(t,"alert-success",e[2].type=="success"),(!h||O&1)&&Q(t,"alert-danger",e[2].type=="error"),(!h||O&1)&&Q(t,"alert-warning",e[2].type=="warning")},r(){m=t.getBoundingClientRect()},f(){Q1(t),_(),og(t,m)},a(){_(),_=X1(t,m,d8,{duration:150})},i(M){h||(Qe(()=>{h&&(d&&d.end(1),c=ug(t,ot,{duration:150}),c.start())}),h=!0)},o(M){c&&c.invalidate(),d=$a(t,ta,{duration:150}),h=!1},d(M){M&&k(t),$.d(),M&&d&&d.end(),b=!1,y()}}}function g8(n){let e,t=[],i=new Map,s,l=n[0];const o=r=>r[2].message;for(let r=0;rt(0,i=l)),[i,l=>gb(l)]}class v8 extends ge{constructor(e){super(),_e(this,e,b8,g8,me,{})}}function y8(n){var s;let e,t=((s=n[1])==null?void 0:s.text)+"",i;return{c(){e=v("h4"),i=U(t),p(e,"class","block center txt-break"),p(e,"slot","header")},m(l,o){w(l,e,o),g(e,i)},p(l,o){var r;o&2&&t!==(t=((r=l[1])==null?void 0:r.text)+"")&&se(i,t)},d(l){l&&k(e)}}}function k8(n){let e,t,i,s,l,o,r;return{c(){e=v("button"),t=v("span"),t.textContent="No",i=E(),s=v("button"),l=v("span"),l.textContent="Yes",p(t,"class","txt"),e.autofocus=!0,p(e,"type","button"),p(e,"class","btn btn-transparent btn-expanded-sm"),e.disabled=n[2],p(l,"class","txt"),p(s,"type","button"),p(s,"class","btn btn-danger btn-expanded"),s.disabled=n[2],Q(s,"btn-loading",n[2])},m(a,u){w(a,e,u),g(e,t),w(a,i,u),w(a,s,u),g(s,l),e.focus(),o||(r=[J(e,"click",n[4]),J(s,"click",n[5])],o=!0)},p(a,u){u&4&&(e.disabled=a[2]),u&4&&(s.disabled=a[2]),u&4&&Q(s,"btn-loading",a[2])},d(a){a&&k(e),a&&k(i),a&&k(s),o=!1,Ee(r)}}}function w8(n){let e,t,i={class:"confirm-popup hide-content overlay-panel-sm",overlayClose:!n[2],escClose:!n[2],btnClose:!1,popup:!0,$$slots:{footer:[k8],header:[y8]},$$scope:{ctx:n}};return e=new ln({props:i}),n[6](e),e.$on("hide",n[7]),{c(){H(e.$$.fragment)},m(s,l){V(e,s,l),t=!0},p(s,[l]){const o={};l&4&&(o.overlayClose=!s[2]),l&4&&(o.escClose=!s[2]),l&271&&(o.$$scope={dirty:l,ctx:s}),e.$set(o)},i(s){t||(A(e.$$.fragment,s),t=!0)},o(s){I(e.$$.fragment,s),t=!1},d(s){n[6](null),z(e,s)}}}function S8(n,e,t){let i;Je(n,au,c=>t(1,i=c));let s,l=!1,o=!1;const r=()=>{t(3,o=!1),s==null||s.hide()},a=async()=>{i!=null&&i.yesCallback&&(t(2,l=!0),await Promise.resolve(i.yesCallback()),t(2,l=!1)),t(3,o=!0),s==null||s.hide()};function u(c){te[c?"unshift":"push"](()=>{s=c,t(0,s)})}const f=async()=>{!o&&(i!=null&&i.noCallback)&&i.noCallback(),await fn(),t(3,o=!1),k1()};return n.$$.update=()=>{n.$$.dirty&3&&i!=null&&i.text&&(t(3,o=!1),s==null||s.show())},[s,i,l,o,r,a,u,f]}class $8 extends ge{constructor(e){super(),_e(this,e,S8,w8,me,{})}}function Q_(n){let e,t,i,s,l,o,r,a,u,f,c,d,m,_,h,b,y,S;return h=new Kn({props:{class:"dropdown dropdown-nowrap dropdown-upside dropdown-left",$$slots:{default:[C8]},$$scope:{ctx:n}}}),{c(){var C;e=v("aside"),t=v("a"),t.innerHTML='PocketBase logo',i=E(),s=v("nav"),l=v("a"),l.innerHTML='',o=E(),r=v("a"),r.innerHTML='',a=E(),u=v("a"),u.innerHTML='',f=E(),c=v("figure"),d=v("img"),_=E(),H(h.$$.fragment),p(t,"href","/"),p(t,"class","logo logo-sm"),p(l,"href","/collections"),p(l,"class","menu-item"),p(l,"aria-label","Collections"),p(r,"href","/logs"),p(r,"class","menu-item"),p(r,"aria-label","Logs"),p(u,"href","/settings"),p(u,"class","menu-item"),p(u,"aria-label","Settings"),p(s,"class","main-menu"),hn(d.src,m="./images/avatars/avatar"+(((C=n[0])==null?void 0:C.avatar)||0)+".svg")||p(d,"src",m),p(d,"alt","Avatar"),p(c,"class","thumb thumb-circle link-hint closable"),p(e,"class","app-sidebar")},m(C,$){w(C,e,$),g(e,t),g(e,i),g(e,s),g(s,l),g(s,o),g(s,r),g(s,a),g(s,u),g(e,f),g(e,c),g(c,d),g(c,_),V(h,c,null),b=!0,y||(S=[Me(on.call(null,t)),Me(on.call(null,l)),Me(Vn.call(null,l,{path:"/collections/?.*",className:"current-route"})),Me(He.call(null,l,{text:"Collections",position:"right"})),Me(on.call(null,r)),Me(Vn.call(null,r,{path:"/logs/?.*",className:"current-route"})),Me(He.call(null,r,{text:"Logs",position:"right"})),Me(on.call(null,u)),Me(Vn.call(null,u,{path:"/settings/?.*",className:"current-route"})),Me(He.call(null,u,{text:"Settings",position:"right"}))],y=!0)},p(C,$){var M;(!b||$&1&&!hn(d.src,m="./images/avatars/avatar"+(((M=C[0])==null?void 0:M.avatar)||0)+".svg"))&&p(d,"src",m);const T={};$&4096&&(T.$$scope={dirty:$,ctx:C}),h.$set(T)},i(C){b||(A(h.$$.fragment,C),b=!0)},o(C){I(h.$$.fragment,C),b=!1},d(C){C&&k(e),z(h),y=!1,Ee(S)}}}function C8(n){let e,t,i,s,l,o,r;return{c(){e=v("a"),e.innerHTML=` Manage admins`,t=E(),i=v("hr"),s=E(),l=v("button"),l.innerHTML=` Logout`,p(e,"href","/settings/admins"),p(e,"class","dropdown-item closable"),p(l,"type","button"),p(l,"class","dropdown-item closable")},m(a,u){w(a,e,u),w(a,t,u),w(a,i,u),w(a,s,u),w(a,l,u),o||(r=[Me(on.call(null,e)),J(l,"click",n[7])],o=!0)},p:x,d(a){a&&k(e),a&&k(t),a&&k(i),a&&k(s),a&&k(l),o=!1,Ee(r)}}}function x_(n){let e,t,i;return t=new pu({props:{scriptSrc:"./libs/tinymce/tinymce.min.js",conf:B.defaultEditorOptions()}}),t.$on("init",n[8]),{c(){e=v("div"),H(t.$$.fragment),p(e,"class","tinymce-preloader hidden")},m(s,l){w(s,e,l),V(t,e,null),i=!0},p:x,i(s){i||(A(t.$$.fragment,s),i=!0)},o(s){I(t.$$.fragment,s),i=!1},d(s){s&&k(e),z(t)}}}function T8(n){var b;let e,t,i,s,l,o,r,a,u,f,c,d,m;document.title=e=B.joinNonEmpty([n[4],n[3],"PocketBase"]," - ");let _=((b=n[0])==null?void 0:b.id)&&n[1]&&Q_(n);o=new c0({props:{routes:c8}}),o.$on("routeLoading",n[5]),o.$on("conditionsFailed",n[6]),a=new v8({}),f=new $8({});let h=n[1]&&!n[2]&&x_(n);return{c(){t=E(),i=v("div"),_&&_.c(),s=E(),l=v("div"),H(o.$$.fragment),r=E(),H(a.$$.fragment),u=E(),H(f.$$.fragment),c=E(),h&&h.c(),d=ye(),p(l,"class","app-body"),p(i,"class","app-layout")},m(y,S){w(y,t,S),w(y,i,S),_&&_.m(i,null),g(i,s),g(i,l),V(o,l,null),g(l,r),V(a,l,null),w(y,u,S),V(f,y,S),w(y,c,S),h&&h.m(y,S),w(y,d,S),m=!0},p(y,[S]){var C;(!m||S&24)&&e!==(e=B.joinNonEmpty([y[4],y[3],"PocketBase"]," - "))&&(document.title=e),(C=y[0])!=null&&C.id&&y[1]?_?(_.p(y,S),S&3&&A(_,1)):(_=Q_(y),_.c(),A(_,1),_.m(i,s)):_&&(ae(),I(_,1,1,()=>{_=null}),ue()),y[1]&&!y[2]?h?(h.p(y,S),S&6&&A(h,1)):(h=x_(y),h.c(),A(h,1),h.m(d.parentNode,d)):h&&(ae(),I(h,1,1,()=>{h=null}),ue())},i(y){m||(A(_),A(o.$$.fragment,y),A(a.$$.fragment,y),A(f.$$.fragment,y),A(h),m=!0)},o(y){I(_),I(o.$$.fragment,y),I(a.$$.fragment,y),I(f.$$.fragment,y),I(h),m=!1},d(y){y&&k(t),y&&k(i),_&&_.d(),z(o),z(a),y&&k(u),z(f,y),y&&k(c),h&&h.d(y),y&&k(d)}}}function M8(n,e,t){let i,s,l,o;Je(n,As,h=>t(10,i=h)),Je(n,$o,h=>t(3,s=h)),Je(n,Ra,h=>t(0,l=h)),Je(n,Tt,h=>t(4,o=h));let r,a=!1,u=!1;function f(h){var b,y,S,C;((b=h==null?void 0:h.detail)==null?void 0:b.location)!==r&&(t(1,a=!!((S=(y=h==null?void 0:h.detail)==null?void 0:y.userData)!=null&&S.showAppSidebar)),r=(C=h==null?void 0:h.detail)==null?void 0:C.location,sn(Tt,o="",o),en({}),k1())}function c(){ji("/")}async function d(){var h,b;if(l!=null&&l.id)try{const y=await ce.settings.getAll({$cancelKey:"initialAppSettings"});sn($o,s=((h=y==null?void 0:y.meta)==null?void 0:h.appName)||"",s),sn(As,i=!!((b=y==null?void 0:y.meta)!=null&&b.hideControls),i)}catch(y){y!=null&&y.isAbort||console.warn("Failed to load app settings.",y)}}function m(){ce.logout()}const _=()=>{t(2,u=!0)};return n.$$.update=()=>{n.$$.dirty&1&&l!=null&&l.id&&d()},[l,a,u,s,o,f,c,m,_]}class O8 extends ge{constructor(e){super(),_e(this,e,M8,T8,me,{})}}new O8({target:document.getElementById("app")});export{Ee as A,zt as B,B as C,ji as D,ye as E,vb as F,_g as G,Gt as H,Je as I,ci as J,$t as K,te as L,v1 as M,bt as N,Ho as O,as as P,Bt as Q,mt as R,ge as S,yn as T,zr as U,I as a,E as b,H as c,z as d,v as e,p as f,w as g,g as h,_e as i,Me as j,ae as k,on as l,V as m,ue as n,k as o,ce as p,pe as q,Q as r,me as s,A as t,J as u,et as v,U as w,se as x,x as y,re as z}; diff --git a/ui/dist/index.html b/ui/dist/index.html index 9635b42b4..fcbf5146e 100644 --- a/ui/dist/index.html +++ b/ui/dist/index.html @@ -45,7 +45,7 @@ window.Prism = window.Prism || {}; window.Prism.manual = true; - + diff --git a/ui/src/components/collections/docs/ListApiDocs.svelte b/ui/src/components/collections/docs/ListApiDocs.svelte index c464a1c3d..3a0d2e2eb 100644 --- a/ui/src/components/collections/docs/ListApiDocs.svelte +++ b/ui/src/components/collections/docs/ListApiDocs.svelte @@ -220,6 +220,24 @@ (by default returns all fields). + + skipTotal + + Boolean + + + If it is set the total counts query will be skipped and the response fields + totalItems and totalPages will have -1 value. +
    + This could drastically speed up the search queries when the total counters are not needed or cursor + based pagination is used. +
    + For optimization purposes, it is set by default for the + getFirstListItem() + and + getFullList() SDKs methods. + +