From 30b5b6d993bd22d7ac9b71f8fc8dc6f0039560ef Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 14:36:38 -0700 Subject: [PATCH 01/14] docs: hosting section --- gitbook/SUMMARY.md | 88 +++++++++++++++++++------------------ gitbook/hosting/overview.md | 41 +++++++++++++++++ 2 files changed, 87 insertions(+), 42 deletions(-) create mode 100644 gitbook/hosting/overview.md diff --git a/gitbook/SUMMARY.md b/gitbook/SUMMARY.md index 5de69506..91411dae 100644 --- a/gitbook/SUMMARY.md +++ b/gitbook/SUMMARY.md @@ -1,56 +1,60 @@ # Table of contents -* [👋 Welcome to PocketHost](README.md) +- [👋 Welcome to PocketHost](README.md) ## Overview -* [Getting Help](overview/help.md) -* [FAQ](overview/faq.md) -* [Roadmap](overview/roadmap.md) +- [Getting Help](overview/help.md) +- [FAQ](overview/faq.md) +- [Roadmap](overview/roadmap.md) ## Daily Usage -* [Creating an Instance](usage/create.md) -* [Accessing an Instance](usage/accessing-instance.md) -* [Instance Details](usage/instances/index.md) -* [Renaming an Instance](usage/rename-instance.md) -* [Maintenance Mode](usage/maintenance.md) -* [FTP Access](usage/ftp.md) -* [Backup & Restore](usage/backup-and-restore.md) -* [Worker](daily-usage/worker.md) -* [PocketBase Hooks](usage/hooks.md) -* [Upgrading](usage/upgrading.md) +- [Creating an Instance](usage/create.md) +- [Accessing an Instance](usage/accessing-instance.md) +- [Instance Details](usage/instances/index.md) +- [Renaming an Instance](usage/rename-instance.md) +- [Maintenance Mode](usage/maintenance.md) +- [FTP Access](usage/ftp.md) +- [Backup & Restore](usage/backup-and-restore.md) +- [Worker](daily-usage/worker.md) +- [PocketBase Hooks](usage/hooks.md) +- [Upgrading](usage/upgrading.md) + +## Hosting + +- [Overview](hosting/overview.md) ## Contributing -* [Overview](development/overview.md) -* [Running Just the Frontend](development/frontend.md) -* [Running Everything](development/full-stack/index.md) -* [Creating RPC Calls](development/rpc.md) -* [Production Deployment](development/production.md) +- [Overview](development/overview.md) +- [Running Just the Frontend](development/frontend.md) +- [Running Everything](development/full-stack/index.md) +- [Creating RPC Calls](development/rpc.md) +- [Production Deployment](development/production.md) ## Release History -* [next](releases/next.md) -* [0.8.0](releases/0.8.0.md) -* [0.7.2](releases/0.7.2.md) -* [0.7.1](releases/0.7.1.md) -* [0.7.0](releases/0.7.0.md) -* [0.6.1](releases/0.6.1.md) -* [0.6.0](releases/0.6.0.md) -* [0.5.7](releases/0.5.7.md) -* [0.5.6](releases/0.5.6.md) -* [0.5.5](releases/0.5.5.md) -* [0.5.4](releases/0.5.4.md) -* [0.5.3](releases/0.5.3.md) -* [0.5.2](releases/0.5.2.md) -* [0.5.1](releases/0.5.1.md) -* [0.5.0](releases/0.5.0.md) -* [0.4.2](releases/0.4.2.md) -* [0.4.1](releases/0.4.1.md) -* [0.4.0](releases/0.4.0.md) -* [0.3.2](releases/0.3.2.md) -* [0.3.1](releases/0.3.1.md) -* [0.3.0](releases/0.3.0.md) -* [0.2.0](releases/0.2.0.md) -* [0.0.1](release-history/0.0.1.md) +- [next](releases/next.md) +- [0.8.0](releases/0.8.0.md) +- [0.7.2](releases/0.7.2.md) +- [0.7.1](releases/0.7.1.md) +- [0.7.0](releases/0.7.0.md) +- [0.6.1](releases/0.6.1.md) +- [0.6.0](releases/0.6.0.md) +- [0.5.7](releases/0.5.7.md) +- [0.5.6](releases/0.5.6.md) +- [0.5.5](releases/0.5.5.md) +- [0.5.4](releases/0.5.4.md) +- [0.5.3](releases/0.5.3.md) +- [0.5.2](releases/0.5.2.md) +- [0.5.1](releases/0.5.1.md) +- [0.5.0](releases/0.5.0.md) +- [0.4.2](releases/0.4.2.md) +- [0.4.1](releases/0.4.1.md) +- [0.4.0](releases/0.4.0.md) +- [0.3.2](releases/0.3.2.md) +- [0.3.1](releases/0.3.1.md) +- [0.3.0](releases/0.3.0.md) +- [0.2.0](releases/0.2.0.md) +- [0.0.1](release-history/0.0.1.md) diff --git a/gitbook/hosting/overview.md b/gitbook/hosting/overview.md new file mode 100644 index 00000000..dc1b4061 --- /dev/null +++ b/gitbook/hosting/overview.md @@ -0,0 +1,41 @@ +# Overview + +[UNDER CONSTRUCTION] + +This guide covers how to set up a production hosting environment for PocketHost. Hosting PocketHost might be desirable if: + +- You want to create a hosting service business powered by PocketHost +- You want a private copy of PocketHost where you control all the underlying infrastructure +- You want to run PocketHost from a region not yet offered by pockethost.io + +Running a hosting service is not easy. To provide a great hosting experience for users, you need to know about: + +- Docker +- Email and DKIM+SPF and more +- DNS jargon: MX, TXT, CNAME +- SSL cert provisioning and management +- Storage +- Volume mounts +- Could computing or VPS deployment +- CDN and static asset hosting +- Amazon AWS +- Lots more - scaling, firewalls, DDoS defense, user security, log rotation, patches, updates, build tools, CPU architectures, multitenancy, on and on + +If you're still interested in creating a PocketHost hosting environment for yourself, read on... + +``` +apt-get update +apt-get install -y nginx nodejs npm +npm i -g n yarn +n lts +hash -r +git clone git@github.com:benallfree/pockethost.git pockethost-latest +cd pockethost-latest +yarn +cd .. +git clone git@github.com:benallfree/pockethost.git pockethost-lts +cd pockethost-lts +yarn +cd .. + +``` From 2a9e69f26c664f8284cd5f794413766dae189c4c Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:47:44 -0700 Subject: [PATCH 02/14] chore: upgrade svelte & sveltekit --- packages/pockethost.io/package.json | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/pockethost.io/package.json b/packages/pockethost.io/package.json index bbddc6ea..09e236cd 100644 --- a/packages/pockethost.io/package.json +++ b/packages/pockethost.io/package.json @@ -15,23 +15,20 @@ "watch": "chokidar 'src/**' -c 'yarn build' --initial" }, "devDependencies": { - "@sveltejs/adapter-node": "^1.0.0-next.99", - "@sveltejs/kit": "next", - "chokidar-cli": "^3.0.0", - "node-html-parser": "^6.1.4", - "svelte": "^3.44.0", - "svelte-check": "^2.7.1", - "svelte-preprocess": "^4.10.6", - "tslib": "^2.3.1", - "typescript": "^4.8.0", - "vite": "^3.1.0" + "@sveltejs/adapter-node": "^1.3.1", + "@sveltejs/kit": "^1.24.1", + "node-html-parser": "^6.1.8", + "svelte": "^4.2.0", + "svelte-check": "^3.5.1", + "svelte-preprocess": "^5.0.4", + "vite": "^4.4.9" }, "type": "module", "dependencies": { "@dansvel/vite-plugin-markdown": "^2.0.5", "@microsoft/fetch-event-source": "https://github.com/Almar/fetch-event-source.git#pr/make_web_worker_friendly", "@pockethost/common": "0.0.1", - "@s-libs/micro-dash": "^15.1.0", + "@s-libs/micro-dash": "^16.1.0", "@types/bootstrap": "^5.2.6", "@types/d3-scale": "^4.0.3", "@types/d3-scale-chromatic": "^3.0.0", From e62f8c12141b96a14f69aee73d140d60b0ce968e Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:47:56 -0700 Subject: [PATCH 03/14] chore: fix env.ts typing --- packages/pockethost.io/src/env.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/pockethost.io/src/env.ts b/packages/pockethost.io/src/env.ts index 77d7c78d..58e996b5 100644 --- a/packages/pockethost.io/src/env.ts +++ b/packages/pockethost.io/src/env.ts @@ -6,15 +6,19 @@ import { boolean } from 'boolean' import UrlPattern from 'url-pattern' import base from '../../../package.json' -export const env = (name: string, _default: string = '') => { +export type PublicEnvName = `PUBLIC_${string}` + +export const env = (name: PublicEnvName, _default: string = '') => { const v = _env[name] if (!v) return _default return v } -export const envi = (name: string, _default: number) => parseInt(env(name, _default.toString())) +export const envi = (name: PublicEnvName, _default: number) => + parseInt(env(name, _default.toString())) -export const envb = (name: string, _default: boolean) => boolean(env(name, _default.toString())) +export const envb = (name: PublicEnvName, _default: boolean) => + boolean(env(name, _default.toString())) export const PUBLIC_APP_DB = env('PUBLIC_APP_DB', 'pockethost-central') export const PUBLIC_APP_DOMAIN = env('PUBLIC_APP_DOMAIN', 'pockethost.io') From b51060329ae882d8d8ccd66c3ebf819be74fa268 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:48:21 -0700 Subject: [PATCH 04/14] chore: update sqlite3 --- packages/daemon/package.json | 8 +- patches/sqlite3+5.1.2.patch | 158 ----------------------------------- 2 files changed, 4 insertions(+), 162 deletions(-) delete mode 100644 patches/sqlite3+5.1.2.patch diff --git a/packages/daemon/package.json b/packages/daemon/package.json index 4f641809..8c93a97c 100644 --- a/packages/daemon/package.json +++ b/packages/daemon/package.json @@ -36,10 +36,10 @@ "pocketbase": "^0.8.0", "semver": "^7.3.8", "sqlite": "^4.1.2", - "sqlite3": "^5.1.2", + "sqlite3": "^5.1.6", "tmp": "^0.2.1", + "tsx": "^3.11.0", "type-fest": "^3.3.0", - "url-pattern": "^1.0.3", - "tsx": "^3.11.0" + "url-pattern": "^1.0.3" } -} \ No newline at end of file +} diff --git a/patches/sqlite3+5.1.2.patch b/patches/sqlite3+5.1.2.patch deleted file mode 100644 index 22180e6e..00000000 --- a/patches/sqlite3+5.1.2.patch +++ /dev/null @@ -1,158 +0,0 @@ -diff --git a/node_modules/sqlite3/lib/sqlite3.d.ts b/node_modules/sqlite3/lib/sqlite3.d.ts -index b27b0cf..783a961 100644 ---- a/node_modules/sqlite3/lib/sqlite3.d.ts -+++ b/node_modules/sqlite3/lib/sqlite3.d.ts -@@ -139,6 +139,153 @@ export class Database extends events.EventEmitter { - wait(callback?: (param: null) => void): this; - - interrupt(): void; -+ -+ backup(path:string, callback?: ()=>void): Backup -+ backup(filename:string, destDbName:string, sourceDbName:string, filenameIsDest:boolean, callback?: ()=>void): Backup -+} -+ -+/** -+ * -+ * A class for managing an sqlite3_backup object. For consistency -+ * with other node-sqlite3 classes, it maintains an internal queue -+ * of calls. -+ * -+ * Intended usage from node: -+ * -+ * var db = new sqlite3.Database('live.db'); -+ * var backup = db.backup('backup.db'); -+ * ... -+ * // in event loop, move backup forward when we have time. -+ * if (backup.idle) { backup.step(NPAGES); } -+ * if (backup.completed) { ... success ... } -+ * if (backup.failed) { ... sadness ... } -+ * // do other work in event loop - fine to modify live.db -+ * ... -+ * -+ * Here is how sqlite's backup api is exposed: -+ * -+ * - `sqlite3_backup_init`: This is implemented as -+ * `db.backup(filename, [callback])` or -+ * `db.backup(filename, destDbName, sourceDbName, filenameIsDest, [callback])`. -+ * - `sqlite3_backup_step`: `backup.step(pages, [callback])`. -+ * - `sqlite3_backup_finish`: `backup.finish([callback])`. -+ * - `sqlite3_backup_remaining`: `backup.remaining`. -+ * - `sqlite3_backup_pagecount`: `backup.pageCount`. -+ * -+ * There are the following read-only properties: -+ * -+ * - `backup.completed` is set to `true` when the backup -+ * succeeeds. -+ * - `backup.failed` is set to `true` when the backup -+ * has a fatal error. -+ * - `backup.message` is set to the error string -+ * the backup has a fatal error. -+ * - `backup.idle` is set to `true` when no operation -+ * is currently in progress or queued for the backup. -+ * - `backup.remaining` is an integer with the remaining -+ * number of pages after the last call to `backup.step` -+ * (-1 if `step` not yet called). -+ * - `backup.pageCount` is an integer with the total number -+ * of pages measured during the last call to `backup.step` -+ * (-1 if `step` not yet called). -+ * -+ * There is the following writable property: -+ * -+ * - `backup.retryErrors`: an array of sqlite3 error codes -+ * that are treated as non-fatal - meaning, if they occur, -+ * backup.failed is not set, and the backup may continue. -+ * By default, this is `[sqlite3.BUSY, sqlite3.LOCKED]`. -+ * -+ * The `db.backup(filename, [callback])` shorthand is sufficient -+ * for making a backup of a database opened by node-sqlite3. If -+ * using attached or temporary databases, or moving data in the -+ * opposite direction, the more complete (but daunting) -+ * `db.backup(filename, destDbName, sourceDbName, filenameIsDest, [callback])` -+ * signature is provided. -+ * -+ * A backup will finish automatically when it succeeds or a fatal -+ * error occurs, meaning it is not necessary to call `db.finish()`. -+ * By default, SQLITE_LOCKED and SQLITE_BUSY errors are not -+ * treated as failures, and the backup will continue if they -+ * occur. The set of errors that are tolerated can be controlled -+ * by setting `backup.retryErrors`. To disable automatic -+ * finishing and stick strictly to sqlite's raw api, set -+ * `backup.retryErrors` to `[]`. In that case, it is necessary -+ * to call `backup.finish()`. -+ * -+ * In the same way as node-sqlite3 databases and statements, -+ * backup methods can be called safely without callbacks, due -+ * to an internal call queue. So for example this naive code -+ * will correctly back up a db, if there are no errors: -+ * -+ * var backup = db.backup('backup.db'); -+ * backup.step(-1); -+ * backup.finish(); -+ * -+ */ -+export class Backup extends events.EventEmitter { -+ /** -+ * `true` when the backup is idle and ready for `step()` to -+ * be called, `false` when busy. -+ */ -+ readonly idle: boolean -+ -+ /** -+ * `true` when the backup has completed, `false` otherwise. -+ */ -+ readonly completed: boolean -+ -+ /** -+ * `true` when the backup has failed, `false` otherwise. `Backup.message` -+ * contains the error message. -+ */ -+ readonly failed: boolean -+ -+ /** -+ * Message failure string from sqlite3_errstr() if `Backup.failed` is `true` -+ */ -+ readonly message: boolean -+ -+ /** -+ * The number of remaining pages after the last call to `step()`, -+ * or `-1` if `step()` has never been called. -+ */ -+ readonly remaining: number -+ -+ /** -+ * The total number of pages measured during the last call to `step()`, -+ * or `-1` if `step()` has never been called. -+ */ -+ readonly pageCount: number -+ -+ -+ /** -+ * An array of sqlite3 error codes that are treated as non-fatal - -+ * meaning, if they occur, `Backup.failed` is not set, and the backup -+ * may continue. By default, this is `[sqlite3.BUSY, sqlite3.LOCKED]`. -+ */ -+ retryErrors: number[] -+ -+ /** -+ * Asynchronously finalize the backup (required). -+ * -+ * @param callback Called when the backup is finalized. -+ */ -+ finish(callback?: ()=>void): void -+ -+ /** -+ * Asynchronously perform an incremental segment of the backup. -+ * -+ * Example: -+ * -+ * ``` -+ * backup.step(5) -+ * ``` -+ * -+ * @param nPages Number of pages to process (5 recommended). -+ * @param callback Called when the step is completed. -+ */ -+ step(nPages: number,callback?: ()=>void): void - } - - export function verbose(): sqlite3; From 69914f41565c8a464fadce31febda81318b1c235 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:48:39 -0700 Subject: [PATCH 05/14] chore: node version guard --- packages/daemon/src/server.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/daemon/src/server.ts b/packages/daemon/src/server.ts index 844ab1df..edabba8e 100644 --- a/packages/daemon/src/server.ts +++ b/packages/daemon/src/server.ts @@ -24,6 +24,12 @@ import { instanceLoggerService } from './services/InstanceLoggerService' import { updaterService } from './services/UpdaterService/UpdaterService' // gen:import +const [major, minor, patch] = process.versions.node.split('.').map(Number) + +if ((major || 0) < 18) { + throw new Error(`Node 18 or higher required.`) +} + loggerService({ debug: DEBUG, trace: TRACE, errorTrace: !DEBUG }) // npm install eventsource --save From c0d35f43780a3bb2a6cf566f3e1dc25875aa7549 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:48:52 -0700 Subject: [PATCH 06/14] chore: hoist tslib and ts versions --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 42829cdf..7c9a9e69 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ ] }, "devDependencies": { + "chokidar-cli": "^3.0.0", "concurrently": "^7.4.0", "patch-package": "^6.5.0", "prettier": "^2.7.1", "prettier-plugin-organize-imports": "^3.1.1", "prettier-plugin-svelte": "^2.7.0", - "typescript": "^4.8.3" + "tslib": "^2.6.2", + "typescript": "^5.0" }, "dependencies": { "postinstall-postinstall": "^2.1.0", From 080469b2714d40af794e97bfc6b06dbcafe5616e Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:49:40 -0700 Subject: [PATCH 07/14] chore: yarn.lock update --- yarn.lock | 602 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 414 insertions(+), 188 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9e3e3961..282ed5a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@babel/code-frame@^7.0.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -56,11 +64,61 @@ "@esbuild-kit/core-utils" "^3.0.0" get-tsconfig "^4.2.0" +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + "@esbuild/android-arm@0.15.13": version "0.15.13" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.13.tgz#ce11237a13ee76d5eae3908e47ba4ddd380af86a" integrity sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw== +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + "@esbuild/linux-loong64@0.14.54": version "0.14.54" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" @@ -71,6 +129,66 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz#64e8825bf0ce769dac94ee39d92ebe6272020dfc" integrity sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag== +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -90,6 +208,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -103,18 +226,23 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@lezer/common@^0.15.0", "@lezer/common@^0.15.7": version "0.15.12" @@ -823,22 +951,22 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@rollup/plugin-commonjs@^23.0.2": - version "23.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz#3a3a5b7b1b1cb29037eb4992edcaae997d7ebd92" - integrity sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg== +"@rollup/plugin-commonjs@^25.0.0": + version "25.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz#a7547a0c4ec3fa79818eb313e1de0023e548f4e6" + integrity sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" glob "^8.0.3" is-reference "1.2.1" - magic-string "^0.26.4" + magic-string "^0.27.0" -"@rollup/plugin-json@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.1.tgz#d5cd67cc83ede42967447dfabbe1be45a091f5b7" - integrity sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw== +"@rollup/plugin-json@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" + integrity sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -871,44 +999,62 @@ tslib "^2.3.0" utility-types "^3.10.0" -"@sveltejs/adapter-node@^1.0.0-next.99": - version "1.0.0-next.100" - resolved "https://registry.yarnpkg.com/@sveltejs/adapter-node/-/adapter-node-1.0.0-next.100.tgz#12fbf0e440e0871869388e4d9d8a007e97d64dd6" - integrity sha512-XtyweoRcrnD3T/hkqv4XAlhU24VM6/QiUqR2mfs7I3Ji/KrBKWSM2GCpSptnfk3mELK193sJ0T4m6Z3x8uf47w== +"@s-libs/micro-dash@^16.1.0": + version "16.1.0" + resolved "https://registry.yarnpkg.com/@s-libs/micro-dash/-/micro-dash-16.1.0.tgz#2a81ab697716ec2caf6f7b7d8e8a1e74833c8e01" + integrity sha512-GmmtRb/vNl1RxErvm/d+ITfjbo4og/CXyYdqs4vpeFrJla0uSEbXwf9aJUXYvgORQDgXV6h9tdgDY6T88FRU3Q== dependencies: - "@rollup/plugin-commonjs" "^23.0.2" - "@rollup/plugin-json" "^5.0.1" - "@rollup/plugin-node-resolve" "^15.0.1" - rollup "^2.79.1" + tslib "^2.3.0" + utility-types "^3.10.0" -"@sveltejs/kit@next": - version "1.0.0-next.544" - resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.0.0-next.544.tgz#3ceec5f05515ab0afffc98b24c60dc05c6a5f6e6" - integrity sha512-zgQHiSvxiTDjJJROj9mPwIEoT6sAopagDroh89cHKarKc2eK/1nISA2dascKz/atGF8mghOn7RXZPnPofr01fQ== +"@sveltejs/adapter-node@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@sveltejs/adapter-node/-/adapter-node-1.3.1.tgz#b3d8dee1ae09d008b2add093e84cf085f3333bbc" + integrity sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw== dependencies: - "@sveltejs/vite-plugin-svelte" "^1.1.0" + "@rollup/plugin-commonjs" "^25.0.0" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.0.1" + rollup "^3.7.0" + +"@sveltejs/kit@^1.24.1": + version "1.24.1" + resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.24.1.tgz#ec9aa74ebde06b24db9ad629a62771fbd3b1c747" + integrity sha512-u2FO0q62Se9UZ0g9kXaWYi+54vTK70BKaPScOcx6jLMRou4CUZgDTNKnRhsbJgPMgaLkOH0j3o/fKlZ6jBfgSg== + dependencies: + "@sveltejs/vite-plugin-svelte" "^2.4.1" "@types/cookie" "^0.5.1" cookie "^0.5.0" - devalue "^4.2.0" + devalue "^4.3.1" + esm-env "^1.0.0" kleur "^4.1.5" - magic-string "^0.26.7" + magic-string "^0.30.0" mime "^3.0.0" sade "^1.8.1" - set-cookie-parser "^2.5.1" + set-cookie-parser "^2.6.0" sirv "^2.0.2" tiny-glob "^0.2.9" - undici "5.12.0" + undici "~5.23.0" -"@sveltejs/vite-plugin-svelte@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.1.1.tgz#15acaa21b579c6c00f3be3c5bd2e69e91dfb2632" - integrity sha512-NzIaGIzWh5hCSMUoxukYEGmxFCWgzaVglqHJLV5r0BA7hHZbHXu8DYR80i6QUX4xyoQ4PZ8ir7SUYsThbreMcg== +"@sveltejs/vite-plugin-svelte-inspector@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz#c99fcb73aaa845a3e2c0563409aeb3ee0b863add" + integrity sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ== dependencies: debug "^4.3.4" - deepmerge "^4.2.2" + +"@sveltejs/vite-plugin-svelte@^2.4.1": + version "2.4.5" + resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.5.tgz#55ba60ce37dfa3acf76b4ec54955011a34cd49a2" + integrity sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ== + dependencies: + "@sveltejs/vite-plugin-svelte-inspector" "^1.0.3" + debug "^4.3.4" + deepmerge "^4.3.1" kleur "^4.1.5" - magic-string "^0.26.7" - svelte-hmr "^0.15.0" + magic-string "^0.30.2" + svelte-hmr "^0.15.3" + vitefu "^0.2.4" "@swc/helpers@^0.4.12": version "0.4.12" @@ -963,10 +1109,10 @@ dependencies: "@types/node" "*" -"@types/estree@*", "@types/estree@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/eventsource@^1.1.9": version "1.1.10" @@ -1007,7 +1153,7 @@ dependencies: "@types/node" "*" -"@types/pug@^2.0.4": +"@types/pug@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== @@ -1017,13 +1163,6 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/sass@^1.16.0": - version "1.43.1" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" - integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== - dependencies: - "@types/node" "*" - "@types/semver@^7.3.13": version "7.3.13" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" @@ -1056,10 +1195,10 @@ abortcontroller-polyfill@^1.1.9: resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== -acorn@^8.5.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.10.0, acorn@^8.5.0, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== agent-base@6, agent-base@^6.0.2: version "6.0.2" @@ -1160,6 +1299,20 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1433,6 +1586,17 @@ clone@^2.1.1: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== +code-red@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/code-red/-/code-red-1.0.4.tgz#59ba5c9d1d320a4ef795bc10a28bd42bfebe3e35" + integrity sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + "@types/estree" "^1.0.1" + acorn "^8.10.0" + estree-walker "^3.0.3" + periscopic "^3.1.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1586,6 +1750,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -1730,10 +1902,10 @@ decompress@^4.2.1: pify "^2.3.0" strip-dirs "^2.0.0" -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== delegates@^1.0.0: version "1.0.0" @@ -1745,7 +1917,12 @@ depd@^1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -detect-indent@^6.0.0: +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +detect-indent@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== @@ -1760,10 +1937,10 @@ detect-libc@^2.0.0: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== -devalue@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/devalue/-/devalue-4.2.0.tgz#3f542d7c828e317bab5fd3bcecde210af8f83d4b" - integrity sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw== +devalue@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/devalue/-/devalue-4.3.2.tgz#cc44e4cf3872ac5a78229fbce3b77e57032727b5" + integrity sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg== dom-serializer@^1.0.1: version "1.4.1" @@ -2135,7 +2312,35 @@ esbuild@^0.14.27: esbuild-windows-64 "0.14.54" esbuild-windows-arm64 "0.14.54" -esbuild@^0.15.9, esbuild@~0.15.10: +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +esbuild@~0.15.10: version "0.15.13" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.13.tgz#7293480038feb2bafa91d3f6a20edab3ba6c108a" integrity sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ== @@ -2173,6 +2378,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +esm-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esm-env/-/esm-env-1.0.0.tgz#b124b40b180711690a4cb9b00d16573391950413" + integrity sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA== + esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -2188,6 +2398,13 @@ estree-walker@^2.0.2: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +estree-walker@^3.0.0, estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + event-source-polyfill@^1.0.31: version "1.0.31" resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz#45fb0a6fc1375b2ba597361ba4287ffec5bf2e0c" @@ -2458,18 +2675,7 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@^8.1.0: +glob@^8.0.3, glob@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -2497,16 +2703,11 @@ globrex@^0.1.2: resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== -graceful-fs@^4.1.10: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.6: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2776,6 +2977,13 @@ is-reference@1.2.1: dependencies: "@types/estree" "*" +is-reference@^3.0.0, is-reference@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" + integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + dependencies: + "@types/estree" "*" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2961,6 +3169,11 @@ lmdb@2.5.2: "@lmdb/lmdb-linux-x64" "2.5.2" "@lmdb/lmdb-win32-x64" "2.5.2" +locate-character@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-character/-/locate-character-3.0.0.tgz#0305c5b8744f61028ef5d01f444009e00779f974" + integrity sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -3005,19 +3218,19 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: - sourcemap-codec "^1.4.8" + "@jridgewell/sourcemap-codec" "^1.4.13" -magic-string@^0.26.4, magic-string@^0.26.7: - version "0.26.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" - integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== +magic-string@^0.30.0, magic-string@^0.30.2: + version "0.30.3" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85" + integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw== dependencies: - sourcemap-codec "^1.4.8" + "@jridgewell/sourcemap-codec" "^1.4.15" make-dir@^1.0.0: version "1.3.0" @@ -3076,6 +3289,11 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -3249,10 +3467,10 @@ nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.4, nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== nanoid@^4.0.0: version "4.0.0" @@ -3331,10 +3549,10 @@ node-gyp@8.x: tar "^6.1.2" which "^2.0.2" -node-html-parser@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-6.1.4.tgz#763cd362497e427d51fc73dda3dcd8ac52ba85a3" - integrity sha512-3muP9Uy/Pz7bQa9TNYVQzWJhNZMqyCx7xJle8kz2/y1UgzAUyXXShc1IcPaJy6u07CE3K5rQcRwlvHzmlySRjg== +node-html-parser@^6.1.8: + version "6.1.8" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-6.1.8.tgz#e4865b891d4e356c1e3171d25101cbb062b68940" + integrity sha512-bi3ChNi5Ne8XM2vDPvE2TOS6+AjgD9ASRJ81P1+45VTe9odNbsNb3SvVZzHho4qnu5gJ1yUYLGlQZ7tveSYNSg== dependencies: css-select "^5.1.0" he "1.2.0" @@ -3562,6 +3780,15 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== +periscopic@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" + integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^3.0.0" + is-reference "^3.0.0" + pg-connection-string@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" @@ -3609,12 +3836,12 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.13, postcss@^8.4.18: - version "8.4.20" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56" - integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g== +postcss@^8.4.13, postcss@^8.4.27: + version "8.4.29" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" + integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -3850,10 +4077,10 @@ rimraf@~2.4.0: optionalDependencies: fsevents "~2.3.2" -rollup@^2.79.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== +rollup@^3.27.1, rollup@^3.7.0: + version "3.29.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.1.tgz#ba53a179d46ac3cd79e162dca6ab70d93cd26f78" + integrity sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg== optionalDependencies: fsevents "~2.3.2" @@ -3946,10 +4173,10 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-cookie-parser@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b" - integrity sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ== +set-cookie-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" + integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== shebang-command@^1.2.0: version "1.2.0" @@ -4014,17 +4241,17 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -sorcery@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" - integrity sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g== +sorcery@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" + integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== dependencies: + "@jridgewell/sourcemap-codec" "^1.4.14" buffer-crc32 "^0.2.5" minimist "^1.2.0" sander "^0.5.0" - sourcemap-codec "^1.3.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -4042,11 +4269,6 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" @@ -4057,10 +4279,10 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sqlite3@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.2.tgz#f50d5b1482b6972fb650daf6f718e6507c6cfb0f" - integrity sha512-D0Reg6pRWAFXFUnZKsszCI67tthFD8fGPewRddDCX6w4cYwz3MbvuwRICbL+YQjBAh9zbw+lJ/V9oC8nG5j6eg== +sqlite3@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.6.tgz#1d4fbc90fe4fbd51e952e0a90fd8f6c2b9098e97" + integrity sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" node-addon-api "^4.2.0" @@ -4176,19 +4398,19 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svelte-check@^2.7.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-2.9.2.tgz#6581b750aa51cf476e82139a674a9bfa4de2ec2d" - integrity sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ== +svelte-check@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-3.5.1.tgz#88265b41623b9374ff35b69802497287073d693d" + integrity sha512-+Zb4iHxAhdUtcUg/WJPRjlS1RJalIsWAe9Mz6G1zyznSs7dDkT7VUBdXc3q7Iwg49O/VrZgyJRvOJkjuBfKjFA== dependencies: - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/trace-mapping" "^0.3.17" chokidar "^3.4.1" fast-glob "^3.2.7" import-fresh "^3.2.1" picocolors "^1.0.0" sade "^1.7.4" - svelte-preprocess "^4.0.0" - typescript "*" + svelte-preprocess "^5.0.4" + typescript "^5.0.3" svelte-highlight@^6.2.1: version "6.2.1" @@ -4197,27 +4419,40 @@ svelte-highlight@^6.2.1: dependencies: highlight.js "11.6.0" -svelte-hmr@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.0.tgz#c8304b5dd33f006415329d91470761d19417a324" - integrity sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg== +svelte-hmr@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.3.tgz#df54ccde9be3f091bf5f18fc4ef7b8eb6405fbe6" + integrity sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ== -svelte-preprocess@^4.0.0, svelte-preprocess@^4.10.6: - version "4.10.7" - resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz#3626de472f51ffe20c9bc71eff5a3da66797c362" - integrity sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw== +svelte-preprocess@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz#2123898e079a074f7f4ef1799e10e037f5bcc55b" + integrity sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw== dependencies: - "@types/pug" "^2.0.4" - "@types/sass" "^1.16.0" - detect-indent "^6.0.0" - magic-string "^0.25.7" - sorcery "^0.10.0" + "@types/pug" "^2.0.6" + detect-indent "^6.1.0" + magic-string "^0.27.0" + sorcery "^0.11.0" strip-indent "^3.0.0" -svelte@^3.44.0: - version "3.53.1" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.53.1.tgz#db9d7df7a8f570e8e22547444c149208b1914442" - integrity sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw== +svelte@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.0.tgz#0e4304c15524450b22fba02516eb72efbd8847b6" + integrity sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ== + dependencies: + "@ampproject/remapping" "^2.2.1" + "@jridgewell/sourcemap-codec" "^1.4.15" + "@jridgewell/trace-mapping" "^0.3.18" + acorn "^8.9.0" + aria-query "^5.3.0" + axobject-query "^3.2.1" + code-red "^1.0.3" + css-tree "^2.3.1" + estree-walker "^3.0.3" + is-reference "^3.0.1" + locate-character "^3.0.0" + magic-string "^0.30.0" + periscopic "^3.1.0" svgo@^2.4.0: version "2.8.0" @@ -4341,10 +4576,10 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsx@^3.11.0, tsx@^3.12.1: version "3.12.1" @@ -4367,10 +4602,10 @@ type-fest@^3.3.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.3.0.tgz#3378c9664eecfd1eb4f0522b13cb0630bc1ec044" integrity sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg== -typescript@*, typescript@^4.8.0, typescript@^4.8.3: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^5.0, typescript@^5.0.3: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -4385,10 +4620,10 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -undici@5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.12.0.tgz#c758ffa704fbcd40d506e4948860ccaf4099f531" - integrity sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg== +undici@~5.23.0: + version "5.23.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" + integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== dependencies: busboy "^1.6.0" @@ -4472,18 +4707,22 @@ vite@^2.7.1: optionalDependencies: fsevents "~2.3.2" -vite@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.3.tgz#7a68d9ef73eff7ee6dc0718ad3507adfc86944a7" - integrity sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ== +vite@^4.4.9: + version "4.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== dependencies: - esbuild "^0.15.9" - postcss "^8.4.18" - resolve "^1.22.1" - rollup "^2.79.1" + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" optionalDependencies: fsevents "~2.3.2" +vitefu@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.4.tgz#212dc1a9d0254afe65e579351bed4e25d81e0b35" + integrity sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g== + weak-lru-cache@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" @@ -4649,20 +4888,7 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.3.1: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yargs@^17.7.2: +yargs@^17.3.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== From 6f55dbee286b4cf4e718ad774b0f26823c45e81c Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:51:44 -0700 Subject: [PATCH 08/14] chore: add dotenv support to root --- package.json | 1 + yarn.lock | 60 +++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7c9a9e69..1030cca1 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "devDependencies": { "chokidar-cli": "^3.0.0", "concurrently": "^7.4.0", + "dotenv-cli": "^7.3.0", "patch-package": "^6.5.0", "prettier": "^2.7.1", "prettier-plugin-organize-imports": "^3.1.1", diff --git a/yarn.lock b/yarn.lock index 282ed5a5..cf2c56f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -203,11 +203,6 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -226,11 +221,6 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1720,6 +1710,15 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -1997,11 +1996,31 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.1" +dotenv-cli@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-7.3.0.tgz#21e33e7944713001677658d68856063968edfbd2" + integrity sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw== + dependencies: + cross-spawn "^7.0.3" + dotenv "^16.3.0" + dotenv-expand "^10.0.0" + minimist "^1.2.6" + +dotenv-expand@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== +dotenv@^16.3.0: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + dotenv@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" @@ -3467,7 +3486,7 @@ nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.4, nanoid@^3.3.6: +nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -3765,6 +3784,11 @@ path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -4185,11 +4209,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@^1.7.3: version "1.7.4" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" @@ -4758,7 +4794,7 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.2: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== From 5f387095d36ed15fe6612fa3de1f44488358016f Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:58:38 -0700 Subject: [PATCH 09/14] chore: dotenvify frontend --- packages/pockethost.io/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pockethost.io/package.json b/packages/pockethost.io/package.json index 09e236cd..a1bac14c 100644 --- a/packages/pockethost.io/package.json +++ b/packages/pockethost.io/package.json @@ -3,14 +3,14 @@ "version": "0.4.1", "private": true, "scripts": { - "dev": "vite dev --force", - "build": "vite build", - "preview": "vite preview", + "dev": "dotenv -e ../../.env vite -- dev --force", + "build": "dotenv -e ../../.env vite -- build", + "preview": "dotenv -e ../../.env vite -- preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check .", "format": "prettier --write .", - "start": "HOST=localhost PORT=5173 node dist-server/index.js", + "start": "HOST=localhost PORT=5173 dotenv -e ../../.env node -- dist-server/index.js", "pm2": "pm2 del www ; pm2 start \"yarn start\" --name=www -o ~/logs/www.log -e ~/logs/www.log", "watch": "chokidar 'src/**' -c 'yarn build' --initial" }, From 86f676ce1225d4b63311a55d393672ad5055c041 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 15:58:44 -0700 Subject: [PATCH 10/14] chore: frontend tsconfig fix --- packages/pockethost.io/tsconfig.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pockethost.io/tsconfig.json b/packages/pockethost.io/tsconfig.json index cb724a15..73be5333 100644 --- a/packages/pockethost.io/tsconfig.json +++ b/packages/pockethost.io/tsconfig.json @@ -11,11 +11,11 @@ "sourceMap": true, "strict": true, "paths": { - "$util/*": ["src/util/*"], - "$components/*": ["src/components/*"], - "$src/*": ["src/*"] + "$util/*": ["./src/util/*"], + "$components/*": ["./src/components/*"], + "$src/*": ["./src/*"] }, - "types": ["src/global.d.ts"] + "types": ["./src/global.d.ts"] } // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias // From f0f7dee9693f7393f1a0b1b9ff124deaa5968efd Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 16:18:07 -0700 Subject: [PATCH 11/14] chore: remove dotenv support --- package.json | 3 +- packages/daemon/package.json | 2 +- packages/pockethost.io/package.json | 6 ++-- yarn.lock | 48 +---------------------------- 4 files changed, 6 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 1030cca1..780be2c4 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "devDependencies": { "chokidar-cli": "^3.0.0", "concurrently": "^7.4.0", - "dotenv-cli": "^7.3.0", "patch-package": "^6.5.0", "prettier": "^2.7.1", "prettier-plugin-organize-imports": "^3.1.1", @@ -52,4 +51,4 @@ "postinstall-postinstall": "^2.1.0", "replace-in-file": "^7.0.1" } -} +} \ No newline at end of file diff --git a/packages/daemon/package.json b/packages/daemon/package.json index 8c93a97c..549172e1 100644 --- a/packages/daemon/package.json +++ b/packages/daemon/package.json @@ -42,4 +42,4 @@ "type-fest": "^3.3.0", "url-pattern": "^1.0.3" } -} +} \ No newline at end of file diff --git a/packages/pockethost.io/package.json b/packages/pockethost.io/package.json index a1bac14c..c30c0c4b 100644 --- a/packages/pockethost.io/package.json +++ b/packages/pockethost.io/package.json @@ -3,9 +3,9 @@ "version": "0.4.1", "private": true, "scripts": { - "dev": "dotenv -e ../../.env vite -- dev --force", - "build": "dotenv -e ../../.env vite -- build", - "preview": "dotenv -e ../../.env vite -- preview", + "dev": "vite dev --force", + "build": "vite build", + "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check .", diff --git a/yarn.lock b/yarn.lock index cf2c56f0..290d3253 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1710,15 +1710,6 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -1996,31 +1987,11 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.1" -dotenv-cli@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-7.3.0.tgz#21e33e7944713001677658d68856063968edfbd2" - integrity sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw== - dependencies: - cross-spawn "^7.0.3" - dotenv "^16.3.0" - dotenv-expand "^10.0.0" - minimist "^1.2.6" - -dotenv-expand@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@^16.3.0: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - dotenv@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" @@ -3784,11 +3755,6 @@ path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -4209,23 +4175,11 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - shell-quote@^1.7.3: version "1.7.4" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" @@ -4794,7 +4748,7 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== From 4e22e6270679fbc0e4e2451515344a40a94c4c32 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sun, 10 Sep 2023 16:33:38 -0700 Subject: [PATCH 12/14] chore: prettier update --- .prettierignore | 4 +- package.json | 15 +- packages/cli/src/commands/build.ts | 2 +- packages/cli/src/commands/dev.ts | 2 +- packages/cli/src/commands/publish.ts | 2 +- packages/cli/src/helpers/buildQueryFilter.ts | 2 +- packages/cli/src/helpers/getOne.ts | 6 +- packages/cli/src/helpers/mergeDeep.ts | 4 +- .../cli/src/helpers/onAuthStateChanged.ts | 2 +- packages/cli/src/helpers/upsert.ts | 6 +- packages/cli/src/providers/CustomAuthStore.ts | 2 +- packages/cli/src/util/assert.ts | 2 +- packages/cli/src/util/ensureAdminClient.ts | 8 +- packages/cli/src/util/pbClient.ts | 6 +- packages/common/src/CleanupManager.ts | 4 +- packages/common/src/Logger.ts | 4 +- packages/common/src/assert.ts | 4 +- packages/common/src/asyncExecutionGuard.ts | 8 +- packages/common/src/events.ts | 8 +- packages/common/src/index.ts | 6 +- packages/common/src/mkSingleton.ts | 4 +- .../pocketbase-client-helpers/RpcHelper.ts | 10 +- .../pocketbase-client-helpers/WatchHelper.ts | 8 +- packages/common/src/safeCatch.ts | 8 +- packages/common/src/schema/Rpc/index.ts | 2 +- packages/common/src/schema/index.ts | 2 +- packages/daemon/src/constants.ts | 8 +- packages/daemon/src/server.ts | 4 +- .../daemon/src/services/CentralDbService.ts | 6 +- .../src/services/FtpService/FtpService.ts | 4 +- .../daemon/src/services/FtpService/PhFs.ts | 43 ++- .../src/services/FtpService/fs-async.ts | 2 +- .../InstanceLoggerService/SqliteLogger.ts | 10 +- .../services/InstanceLoggerService/index.ts | 6 +- .../InstanceService/Deno/DenoProcess.ts | 6 +- .../InstanceService/InstanceService.ts | 75 +++--- .../services/InstanceService/PortManager.ts | 4 +- .../daemon/src/services/PocketBaseService.ts | 12 +- packages/daemon/src/services/ProxyService.ts | 10 +- packages/daemon/src/services/RealtimeLog.ts | 12 +- .../src/services/RpcService/RpcService.ts | 20 +- .../src/services/RpcService/commands.ts | 12 +- .../services/SqliteService/SqliteService.ts | 16 +- .../services/UpdaterService/UpdaterService.ts | 10 +- .../services/clientService/InstanceMIxin.ts | 28 +- .../services/clientService/InvocationMixin.ts | 8 +- .../src/services/clientService/PbClient.ts | 6 +- .../src/services/clientService/RpcHelper.ts | 12 +- .../services/clientService/clientService.ts | 2 +- packages/daemon/src/services/index.ts | 4 +- .../commands/cleanup/deleteInstance.ts | 28 +- .../src/stresser/commands/cleanup/index.ts | 2 +- packages/daemon/src/stresser/commands/seed.ts | 2 +- .../daemon/src/stresser/commands/stress.ts | 14 +- packages/daemon/src/stresser/index.ts | 2 +- .../daemon/src/util/downloadAndExtract.ts | 6 +- packages/daemon/src/util/smartFetch.ts | 2 +- packages/daemon/src/util/tryFetch.ts | 2 +- packages/deno-worker/EventSource.ts | 2 +- packages/deno-worker/index.d.ts | 2 +- packages/deno-worker/index.ts | 2 +- packages/pockethost.io/.prettierrc | 16 -- .../src/components/AccordionItem.svelte | 2 +- .../src/components/AlertBar.types.ts | 2 +- .../src/components/helpers/theme.ts | 9 +- packages/pockethost.io/src/env.ts | 4 +- .../src/pocketbase/PocketbaseClient.ts | 161 ++++++----- .../pockethost.io/src/pocketbase/index.ts | 5 +- .../instances/[instanceId]/Secrets/stores.ts | 10 +- packages/pockethost.io/src/util/database.ts | 29 +- packages/pockethost.io/src/util/events.ts | 6 +- packages/pockethost.io/src/util/stores.ts | 6 +- packages/pockethost.io/vite.config.ts | 4 +- yarn.lock | 255 ++++++++++-------- 74 files changed, 535 insertions(+), 489 deletions(-) delete mode 100644 packages/pockethost.io/.prettierrc diff --git a/.prettierignore b/.prettierignore index e77087d0..28f97633 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,5 @@ .svelte-kit dist -mount \ No newline at end of file +mount +.data +attic \ No newline at end of file diff --git a/package.json b/package.json index 780be2c4..a8fcf011 100644 --- a/package.json +++ b/package.json @@ -32,18 +32,19 @@ "semi": false, "useTabs": false, "singleQuote": true, + "trailingComma": "all", "plugins": [ - "./node_modules/prettier-plugin-organize-imports", - "./node_modules/prettier-plugin-svelte" + "./node_modules/prettier-plugin-organize-imports/index.js", + "./node_modules/prettier-plugin-svelte/plugin.js" ] }, "devDependencies": { "chokidar-cli": "^3.0.0", - "concurrently": "^7.4.0", - "patch-package": "^6.5.0", - "prettier": "^2.7.1", - "prettier-plugin-organize-imports": "^3.1.1", - "prettier-plugin-svelte": "^2.7.0", + "concurrently": "^8.2.1", + "patch-package": "^8.0.0", + "prettier": "^3.0.3", + "prettier-plugin-organize-imports": "^3.2.3", + "prettier-plugin-svelte": "^3.0.3", "tslib": "^2.6.2", "typescript": "^5.0" }, diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index 87182649..ab7fd5cf 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -18,7 +18,7 @@ export const addDevCommand = (program: Command) => { .description('Build the JS bundle') .option( '--src ', - `Path to source (default: /src/index.{ts|js})` + `Path to source (default: /src/index.{ts|js})`, ) .option('--dist ', `Path to dist (default: /dist/index.js)`) .action(async (options) => { diff --git a/packages/cli/src/commands/dev.ts b/packages/cli/src/commands/dev.ts index a6408cd6..387e7c6c 100644 --- a/packages/cli/src/commands/dev.ts +++ b/packages/cli/src/commands/dev.ts @@ -22,7 +22,7 @@ export const addDevCommand = (program: Command) => { .description('Watch for source code changes in development mode') .option( '--src ', - `Path to source (default: /src/index.{ts|js})` + `Path to source (default: /src/index.{ts|js})`, ) .option('--dist ', `Path to dist (default: /dist/index.js)`) .option('--host', 'PocketBase host', DEFAULT_PB_DEV_URL) diff --git a/packages/cli/src/commands/publish.ts b/packages/cli/src/commands/publish.ts index 7da70c17..5a3a29ee 100644 --- a/packages/cli/src/commands/publish.ts +++ b/packages/cli/src/commands/publish.ts @@ -70,7 +70,7 @@ export const addPublishCommand = (program: Command) => { .description('Publish JS bundle to PBScript-enabled PocketBase instance') .option( '--dist ', - `Path to dist bundle (default: /dist/index.js)` + `Path to dist bundle (default: /dist/index.js)`, ) .option('--host ', `PocketBase host (default: ${DEFAULT_PB_DEV_URL})`) .action(async (options) => { diff --git a/packages/cli/src/helpers/buildQueryFilter.ts b/packages/cli/src/helpers/buildQueryFilter.ts index 91f84194..7cf4ad72 100644 --- a/packages/cli/src/helpers/buildQueryFilter.ts +++ b/packages/cli/src/helpers/buildQueryFilter.ts @@ -6,7 +6,7 @@ export type FieldStruct = Partial<{ }> export const buildQueryFilter = ( - fields: FieldStruct + fields: FieldStruct, ): Pb_QueryParams => { const filter = map(fields, (v, k) => `${k.toString()} = "${v}"`).join(' and ') return { filter } diff --git a/packages/cli/src/helpers/getOne.ts b/packages/cli/src/helpers/getOne.ts index 846ec8ba..ddafe39c 100644 --- a/packages/cli/src/helpers/getOne.ts +++ b/packages/cli/src/helpers/getOne.ts @@ -5,14 +5,14 @@ import { Pb_Any_Record_Db, Pb_Untrusted_Db, } from '../schema/base' -import { buildQueryFilter, FieldStruct } from './buildQueryFilter' +import { FieldStruct, buildQueryFilter } from './buildQueryFilter' export const getOne = async < TRec extends Pb_Any_Record_Db, - TFields extends FieldStruct = FieldStruct + TFields extends FieldStruct = FieldStruct, >( collectionName: Pb_Any_Collection_Name, - fields: TFields + fields: TFields, ) => { const queryParams = buildQueryFilter(fields) const recs = await client.records.getList(collectionName, 1, 2, queryParams) diff --git a/packages/cli/src/helpers/mergeDeep.ts b/packages/cli/src/helpers/mergeDeep.ts index 661c4192..8ea281b9 100644 --- a/packages/cli/src/helpers/mergeDeep.ts +++ b/packages/cli/src/helpers/mergeDeep.ts @@ -6,14 +6,14 @@ export const mergeDeep = (dst: any, src: TObject) => { if (dst[k] === undefined) dst[k] = {} if (!isObject(dst[k])) { throw new Error( - `${k.toString()} is an object in default, but not in target` + `${k.toString()} is an object in default, but not in target`, ) } dst[k] = mergeDeep(dst[k], v) } else { if (isObject(dst[k])) { throw new Error( - `${k.toString()} is an object in target, but not in default` + `${k.toString()} is an object in target, but not in default`, ) } // The magic: if the target has no value for this field, use the diff --git a/packages/cli/src/helpers/onAuthStateChanged.ts b/packages/cli/src/helpers/onAuthStateChanged.ts index ae204d7c..540426e6 100644 --- a/packages/cli/src/helpers/onAuthStateChanged.ts +++ b/packages/cli/src/helpers/onAuthStateChanged.ts @@ -2,7 +2,7 @@ import { UnsubFunc } from 'store/backend/types' import { client } from '../client' export const onAuthStateChanged = ( - cb: (user: typeof client.authStore.model) => void + cb: (user: typeof client.authStore.model) => void, ): UnsubFunc => { setTimeout(() => cb(client.authStore.model), 0) return client.authStore.onChange(() => { diff --git a/packages/cli/src/helpers/upsert.ts b/packages/cli/src/helpers/upsert.ts index f1c9a9b3..7c04f8f4 100644 --- a/packages/cli/src/helpers/upsert.ts +++ b/packages/cli/src/helpers/upsert.ts @@ -8,14 +8,14 @@ import { Pb_Untrusted_Db, Pb_UserFields, } from '../schema/base' -import { buildQueryFilter, FieldStruct } from './buildQueryFilter' +import { FieldStruct, buildQueryFilter } from './buildQueryFilter' import { mergeDeep } from './mergeDeep' export const upsert = async ( collectionName: Pb_Any_Collection_Name, filterFields: FieldStruct, mutate: (draft: Draft>) => void, - defaultRec: Pb_UserFields + defaultRec: Pb_UserFields, ) => { const queryParams = buildQueryFilter(filterFields) const recs = await client.records.getList(collectionName, 1, 2, queryParams) @@ -42,7 +42,7 @@ export const upsert = async ( } return carry }, - {} as Partial> + {} as Partial>, ) client.records.update(collectionName, id, final) } diff --git a/packages/cli/src/providers/CustomAuthStore.ts b/packages/cli/src/providers/CustomAuthStore.ts index 2ef57786..825a1606 100644 --- a/packages/cli/src/providers/CustomAuthStore.ts +++ b/packages/cli/src/providers/CustomAuthStore.ts @@ -50,7 +50,7 @@ export class CustomAuthStore extends BaseAuthStore { } exportToCookie( options?: SerializeOptions | undefined, - key?: string | undefined + key?: string | undefined, ): string { throw new Error(`Unsupported exportToCookie()`) } diff --git a/packages/cli/src/util/assert.ts b/packages/cli/src/util/assert.ts index e5fc23b3..c3eb4bcf 100644 --- a/packages/cli/src/util/assert.ts +++ b/packages/cli/src/util/assert.ts @@ -1,6 +1,6 @@ export function assertExists( v: TType, - message = `Value does not exist` + message = `Value does not exist`, ): asserts v is NonNullable { if (typeof v === 'undefined') { throw new Error(message) diff --git a/packages/cli/src/util/ensureAdminClient.ts b/packages/cli/src/util/ensureAdminClient.ts index 63d1f77c..48156d56 100644 --- a/packages/cli/src/util/ensureAdminClient.ts +++ b/packages/cli/src/util/ensureAdminClient.ts @@ -20,11 +20,11 @@ export type ConnectionConfig = { export const ensureAdminClient = async ( slug: string, - config: ConnectionConfig + config: ConnectionConfig, ) => { const saver = mkProjectSaver(slug) const client = pbClient(config, (session) => - saver((config) => ({ ...config, session })) + saver((config) => ({ ...config, session })), ) const _isAdmin = await isAdmin(client) if (_isAdmin) { @@ -34,7 +34,7 @@ export const ensureAdminClient = async ( const { host } = config console.log( - `You must be logged in to ${host}/_ as a PocketBase admin to continue.` + `You must be logged in to ${host}/_ as a PocketBase admin to continue.`, ) while (true) { @@ -55,7 +55,7 @@ export const ensureAdminClient = async ( value.length > 0 ? true : `Enter a password`, }, ], - { onCancel: () => die(`Exited.`) } + { onCancel: () => die(`Exited.`) }, ) const { username, password } = response try { diff --git a/packages/cli/src/util/pbClient.ts b/packages/cli/src/util/pbClient.ts index dc36a8cd..12ef46b1 100644 --- a/packages/cli/src/util/pbClient.ts +++ b/packages/cli/src/util/pbClient.ts @@ -9,13 +9,13 @@ import { ConnectionConfig } from './ensureAdminClient' export const pbClient = ( config: ConnectionConfig, - saver: SessionStateSaver + saver: SessionStateSaver, ) => { const { host, session } = config const client = new PocketBase( host, 'en-US', - new CustomAuthStore(session, saver) + new CustomAuthStore(session, saver), ) return client } @@ -31,7 +31,7 @@ export const isAdmin = async (client: pocketbaseEs) => { export const adminPbClient = async ( config: ConnectionConfig, - saver: SessionStateSaver + saver: SessionStateSaver, ) => { const client = pbClient(config, saver) if (!client.authStore.isValid) { diff --git a/packages/common/src/CleanupManager.ts b/packages/common/src/CleanupManager.ts index f62bf9ec..7ddc31b5 100644 --- a/packages/common/src/CleanupManager.ts +++ b/packages/common/src/CleanupManager.ts @@ -38,10 +38,10 @@ export const createCleanupManager = (slug?: string) => { (c, v) => { return c.then(() => v()) }, - Promise.resolve() + Promise.resolve(), ).catch((e) => { error( - `Cleanup functions are failing. This should never happen, check all cleanup functions to make sure they are trapping their exceptions.` + `Cleanup functions are failing. This should never happen, check all cleanup functions to make sure they are trapping their exceptions.`, ) throw e }) diff --git a/packages/common/src/Logger.ts b/packages/common/src/Logger.ts index 9d2a23b3..c84fa4c4 100644 --- a/packages/common/src/Logger.ts +++ b/packages/common/src/Logger.ts @@ -58,7 +58,7 @@ export const createLogger = (config: Partial) => { return JSON.stringify(arg) } return arg - }) + }), ) } @@ -89,7 +89,7 @@ export const createLogger = (config: Partial) => { ;[..._buf.slice(_curIdx, MAX_BUF), ..._buf.slice(0, _curIdx)].forEach( (args) => { console.error(...args) - } + }, ) console.error(`========== ERROR TRACEBACK END ==============`) } diff --git a/packages/common/src/assert.ts b/packages/common/src/assert.ts index aa052949..4b631cc3 100644 --- a/packages/common/src/assert.ts +++ b/packages/common/src/assert.ts @@ -1,6 +1,6 @@ export function assertExists( v: TType, - message = `Value does not exist` + message = `Value does not exist`, ): asserts v is NonNullable { if (typeof v === 'undefined') { throw new Error(message) @@ -9,7 +9,7 @@ export function assertExists( export function assertTruthy( v: unknown, - message = `Value should be truthy` + message = `Value should be truthy`, ): asserts v is NonNullable { if (!v) { throw new Error(message) diff --git a/packages/common/src/asyncExecutionGuard.ts b/packages/common/src/asyncExecutionGuard.ts index cd31a4d3..1ee5fd65 100644 --- a/packages/common/src/asyncExecutionGuard.ts +++ b/packages/common/src/asyncExecutionGuard.ts @@ -5,10 +5,10 @@ import { SetReturnType } from 'type-fest' const limiters: { [lane: string]: Bottleneck } = {} export const serialAsyncExecutionGuard = < - T extends (...args: any[]) => Promise + T extends (...args: any[]) => Promise, >( cb: T, - lane?: SetReturnType + lane?: SetReturnType, ): T => { const uuid = uniqueId() const _lane = lane || (() => uuid) @@ -27,10 +27,10 @@ export const serialAsyncExecutionGuard = < const singletons: { [_: string]: Promise } = {} export const singletonAsyncExecutionGuard = < - T extends (...args: any[]) => Promise + T extends (...args: any[]) => Promise, >( cb: T, - key: SetReturnType + key: SetReturnType, ): T => { const uuid = uniqueId() const keyFactory = key || (() => uuid) diff --git a/packages/common/src/events.ts b/packages/common/src/events.ts index 68837f91..10d5b0fa 100644 --- a/packages/common/src/events.ts +++ b/packages/common/src/events.ts @@ -3,15 +3,15 @@ import { values } from '@s-libs/micro-dash' export type Unsubscribe = () => void export type EventSubscriber = ( - cb: EventHandler + cb: EventHandler, ) => Unsubscribe export type EventEmitter = ( payload: TPayload, - stopOnHandled?: boolean + stopOnHandled?: boolean, ) => Promise export type EventHandler = ( payload: TPayload, - isHandled: boolean + isHandled: boolean, ) => boolean | void | Promise /** @@ -20,7 +20,7 @@ export type EventHandler = ( * @returns void */ export const createEvent = ( - defaultHandler?: EventHandler + defaultHandler?: EventHandler, ): [EventSubscriber, EventEmitter] => { let i = 0 const callbacks: any = {} diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 2c2bfb0f..bf1ede4e 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,11 +1,11 @@ +export * from './CleanupManager' +export * from './Logger' +export * from './TimerManager' export * from './assert' export * from './asyncExecutionGuard' -export * from './CleanupManager' export * from './events' -export * from './Logger' export * from './mkSingleton' export * from './newId' export * from './pocketbase-client-helpers' export * from './safeCatch' export * from './schema' -export * from './TimerManager' diff --git a/packages/common/src/mkSingleton.ts b/packages/common/src/mkSingleton.ts index e6cbe52a..555958d1 100644 --- a/packages/common/src/mkSingleton.ts +++ b/packages/common/src/mkSingleton.ts @@ -10,9 +10,9 @@ export type SingletonBaseConfig = { export const mkSingleton = < TConfig, - TApi extends SingletonApi | Promise + TApi extends SingletonApi | Promise, >( - factory: (config: TConfig) => TApi + factory: (config: TConfig) => TApi, ) => { let _service: TApi | undefined = undefined return (config?: TConfig) => { diff --git a/packages/common/src/pocketbase-client-helpers/RpcHelper.ts b/packages/common/src/pocketbase-client-helpers/RpcHelper.ts index 03e4a313..2ebf0936 100644 --- a/packages/common/src/pocketbase-client-helpers/RpcHelper.ts +++ b/packages/common/src/pocketbase-client-helpers/RpcHelper.ts @@ -6,11 +6,11 @@ import { logger } from '../Logger' import { newId } from '../newId' import { safeCatch } from '../safeCatch' import { + RPC_COLLECTION, RpcCommands, RpcFields, RpcRecord_Create, RpcStatus, - RPC_COLLECTION, } from '../schema' import type { WatchHelper } from './WatchHelper' @@ -30,7 +30,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { const mkRpc = ( cmd: RpcCommands, - schema: JSONSchemaType + schema: JSONSchemaType, ) => { type ConcreteRpcRecord = RpcFields const validator = new Ajv().compile(schema) @@ -39,7 +39,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { logger(), async ( payload: TPayload, - cb?: (data: RecordSubscription) => void + cb?: (data: RecordSubscription) => void, ) => { const _rpcLogger = _logger.create(cmd) const { dbg, error } = _rpcLogger @@ -82,7 +82,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { reject(new ClientResponseError(data.record.result)) } }, - { initialFetch: false, pollIntervalMs: 100 } + { initialFetch: false, pollIntervalMs: 100 }, ) dbg(`Creating ${rpcIn.id}`) const newRpc = await client.collection(RPC_COLLECTION).create(rpcIn) @@ -92,7 +92,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { reject(e) }) }) - } + }, ) } diff --git a/packages/common/src/pocketbase-client-helpers/WatchHelper.ts b/packages/common/src/pocketbase-client-helpers/WatchHelper.ts index 6149822d..05130cae 100644 --- a/packages/common/src/pocketbase-client-helpers/WatchHelper.ts +++ b/packages/common/src/pocketbase-client-helpers/WatchHelper.ts @@ -1,9 +1,9 @@ import type pocketbaseEs from 'pocketbase' import type { RecordSubscription, UnsubscribeFunc } from 'pocketbase' import { logger } from '../Logger' +import { UnixTimestampMs, createTimerManager } from '../TimerManager' import { safeCatch } from '../safeCatch' import { BaseFields, RecordId } from '../schema' -import { createTimerManager, UnixTimestampMs } from '../TimerManager' export type WatchHelperConfig = { client: pocketbaseEs @@ -23,7 +23,7 @@ export const createWatchHelper = (config: WatchHelperConfig) => { collectionName: string, id: RecordId, cb: (data: RecordSubscription, unsub: UnsubscribeFunc) => void, - options?: Partial + options?: Partial, ): Promise => { const { dbg } = logger().create(`watchById:${collectionName}:${id}`) const config: WatchConfig = { @@ -89,7 +89,7 @@ export const createWatchHelper = (config: WatchHelperConfig) => { idName: keyof TRec, idValue: RecordId, cb: (data: RecordSubscription) => void, - initialFetch = true + initialFetch = true, ): Promise => { let hasUpdate: { [_: RecordId]: boolean } = {} const unsub = client @@ -112,7 +112,7 @@ export const createWatchHelper = (config: WatchHelperConfig) => { }) } return unsub - } + }, ) return { watchById, watchAllById } diff --git a/packages/common/src/safeCatch.ts b/packages/common/src/safeCatch.ts index 8bb80a8f..478544cd 100644 --- a/packages/common/src/safeCatch.ts +++ b/packages/common/src/safeCatch.ts @@ -9,7 +9,7 @@ export const safeCatch = ( name: string, logger: Logger, cb: (...args: TIn) => Promise, - timeoutMs = SAFECATCH_TTL_MS + timeoutMs = SAFECATCH_TTL_MS, ): ((...args: TIn) => Promise) => { return async (...args: TIn) => { const uuid = `${name}:${nanoid()}` @@ -29,17 +29,17 @@ export const safeCatch = ( if (e instanceof ClientResponseError) { if (e.status === 400) { dbg( - `PocketBase API error: It looks like you don't have permission to make this request. Raw error: ${e}. Payload: ${payload}` + `PocketBase API error: It looks like you don't have permission to make this request. Raw error: ${e}. Payload: ${payload}`, ) } else if (e.status === 0) { dbg( - `Client request aborted (possible duplicate request or real error). Raw error: ${e}. Payload: ${payload}` + `Client request aborted (possible duplicate request or real error). Raw error: ${e}. Payload: ${payload}`, ) } else if (e.status === 404) { dbg(`Record not found. Raw error: ${e}. Payload: ${payload}`) } else { dbg( - `Unknown PocketBase API error. Raw error: ${e}. Payload: ${payload}` + `Unknown PocketBase API error. Raw error: ${e}. Payload: ${payload}`, ) } } else { diff --git a/packages/common/src/schema/Rpc/index.ts b/packages/common/src/schema/Rpc/index.ts index a497f7ce..5e7ece5d 100644 --- a/packages/common/src/schema/Rpc/index.ts +++ b/packages/common/src/schema/Rpc/index.ts @@ -34,7 +34,7 @@ export type RpcPayloadBase = JsonObject export type RpcFields< TPayload extends RpcPayloadBase, - TRes extends JsonObject + TRes extends JsonObject, > = BaseFields & { userId: UserId cmd: string diff --git a/packages/common/src/schema/index.ts b/packages/common/src/schema/index.ts index 03e52d6f..d6f06510 100644 --- a/packages/common/src/schema/index.ts +++ b/packages/common/src/schema/index.ts @@ -3,7 +3,7 @@ export * from './Instance' export * from './InstanceLog' export * from './Invocation' export * from './Rpc' -export * from './types' export * from './User' +export * from './types' export * from './util' // gen:export diff --git a/packages/daemon/src/constants.ts b/packages/daemon/src/constants.ts index 42737a37..29d675fa 100644 --- a/packages/daemon/src/constants.ts +++ b/packages/daemon/src/constants.ts @@ -25,7 +25,7 @@ export const DAEMON_PB_MIGRATIONS_DIR = (() => { const v = env('DAEMON_PB_MIGRATIONS_DIR') if (!v) { throw new Error( - `DAEMON_PB_MIGRATIONS_DIR (${v}) environment variable must be specified` + `DAEMON_PB_MIGRATIONS_DIR (${v}) environment variable must be specified`, ) } if (!existsSync(v)) { @@ -38,7 +38,7 @@ export const DAEMON_PB_DATA_DIR = (() => { const v = env('DAEMON_PB_DATA_DIR') if (!v) { throw new Error( - `DAEMON_PB_DATA_DIR (${v}) environment variable must be specified` + `DAEMON_PB_DATA_DIR (${v}) environment variable must be specified`, ) } if (!existsSync(v)) { @@ -56,12 +56,12 @@ export const DAEMON_MAX_PORTS = envi(`DAEMON_MAX_PORTS`, 500) export const DAEMON_PB_BACKUP_SLEEP = envi(`DAEMON_PB_BACKUP_SLEEP`, 100) export const DAEMON_PB_BACKUP_PAGE_COUNT = envi( `DAEMON_PB_BACKUP_PAGE_COUNT`, - 5 + 5, ) export const PH_BIN_CACHE = env( `PH_BIN_CACHE`, - join(__dirname, `../../../.pbincache`) + join(__dirname, `../../../.pbincache`), ) export const PH_FTP_PORT = envi('PH_FTP_PORT', 21) diff --git a/packages/daemon/src/server.ts b/packages/daemon/src/server.ts index edabba8e..ae353270 100644 --- a/packages/daemon/src/server.ts +++ b/packages/daemon/src/server.ts @@ -79,7 +79,7 @@ global.EventSource = require('eventsource') error(`migrate had an unexpected stop. Check it out`) }, }, - { logger } + { logger }, ) ).exited info(`Migrating done`) @@ -96,7 +96,7 @@ global.EventSource = require('eventsource') error(`migrate had an unexpected stop. Check it out`) }, }, - { logger } + { logger }, ) /** diff --git a/packages/daemon/src/services/CentralDbService.ts b/packages/daemon/src/services/CentralDbService.ts index 05013cc2..6b08736e 100644 --- a/packages/daemon/src/services/CentralDbService.ts +++ b/packages/daemon/src/services/CentralDbService.ts @@ -20,15 +20,15 @@ export const centralDbService = mkSingleton( const target = coreInternalUrl dbg( - `Forwarding proxy request for ${req.url} to central instance ${target}` + `Forwarding proxy request for ${req.url} to central instance ${target}`, ) proxy.web(req, res, { target }) }, - `CentralDbService` + `CentralDbService`, ) return { shutdown() {}, } - } + }, ) diff --git a/packages/daemon/src/services/FtpService/FtpService.ts b/packages/daemon/src/services/FtpService/FtpService.ts index cc3d763b..bdf0a88a 100644 --- a/packages/daemon/src/services/FtpService/FtpService.ts +++ b/packages/daemon/src/services/FtpService/FtpService.ts @@ -7,7 +7,7 @@ import { SSL_KEY, } from '$constants' import { clientService, createPbClient } from '$services' -import { mkSingleton, SingletonBaseConfig } from '@pockethost/common' +import { SingletonBaseConfig, mkSingleton } from '@pockethost/common' import { readFileSync } from 'fs' import { FtpSrv } from 'ftp-srv' import { PhFs } from './PhFs' @@ -77,7 +77,7 @@ export const ftpService = mkSingleton((config: FtpConfig) => { reject(new Error(`Invalid username or password`)) return } - } + }, ) ftpServer.listen().then(() => { diff --git a/packages/daemon/src/services/FtpService/PhFs.ts b/packages/daemon/src/services/FtpService/PhFs.ts index 9bc0bc10..0e082060 100644 --- a/packages/daemon/src/services/FtpService/PhFs.ts +++ b/packages/daemon/src/services/FtpService/PhFs.ts @@ -3,24 +3,24 @@ import { assert } from '$util' import { InstanceFields, Logger } from '@pockethost/common' import { compact, map } from '@s-libs/micro-dash' import { + Mode, constants, createReadStream, createWriteStream, existsSync, mkdirSync, - Mode, } from 'fs' import { FileStat, FileSystem, FtpConnection } from 'ftp-srv' import { customAlphabet } from 'nanoid' import { isAbsolute, join, normalize, resolve, sep } from 'path' import { PocketbaseClientApi } from '../clientService/PbClient' -import * as fsAsync from './fs-async' import { FolderNames, INSTANCE_ROOT_FOLDER_NAMES, - isInstanceRootFolder, MAINTENANCE_ONLY_FOLDER_NAMES, + isInstanceRootFolder, } from './FtpService' +import * as fsAsync from './fs-async' const nanoid = customAlphabet(`abcdefghijklmnop`) @@ -51,7 +51,7 @@ export class PhFs implements FileSystem { constructor( connection: FtpConnection, client: PocketbaseClientApi, - logger: Logger + logger: Logger, ) { const cwd = `/` const root = DAEMON_PB_DATA_DIR @@ -109,12 +109,12 @@ export class PhFs implements FileSystem { dbg({ rootFolderName, instance }) if ( MAINTENANCE_ONLY_FOLDER_NAMES.includes( - rootFolderName as FolderNames + rootFolderName as FolderNames, ) && !instance.maintenance ) { throw new Error( - `Instance must be in maintenance mode to access ${rootFolderName}` + `Instance must be in maintenance mode to access ${rootFolderName}`, ) } fsPathParts.push(rootFolderName) @@ -122,7 +122,7 @@ export class PhFs implements FileSystem { const rootFolderFsPath = resolve( join(...fsPathParts) .replace(UNIX_SEP_REGEX, sep) - .replace(WIN_SEP_REGEX, sep) + .replace(WIN_SEP_REGEX, sep), ) if (!existsSync(rootFolderFsPath)) { mkdirSync(rootFolderFsPath) @@ -137,7 +137,7 @@ export class PhFs implements FileSystem { const fsPath = resolve( join(...fsPathParts) .replace(UNIX_SEP_REGEX, sep) - .replace(WIN_SEP_REGEX, sep) + .replace(WIN_SEP_REGEX, sep), ) // Create FTP client path using unix separator @@ -210,7 +210,7 @@ export class PhFs implements FileSystem { */ if (!instance) { throw new Error( - `Something as gone wrong. An instance without a subdomain is not possible.` + `Something as gone wrong. An instance without a subdomain is not possible.`, ) } @@ -247,7 +247,7 @@ export class PhFs implements FileSystem { }) }) .catch(() => null) - }) + }), ) }) .then(compact) @@ -322,7 +322,7 @@ export class PhFs implements FileSystem { async write( fileName: string, - options?: { append?: boolean | undefined; start?: any } | undefined + options?: { append?: boolean | undefined; start?: any } | undefined, ) { const { dbg, error } = this.log .create(`write`) @@ -366,7 +366,7 @@ export class PhFs implements FileSystem { async read( fileName: string, - options: { start?: any } | undefined + options: { start?: any } | undefined, ): Promise { const { dbg, error } = this.log .create(`read`) @@ -374,9 +374,8 @@ export class PhFs implements FileSystem { .breadcrumb(fileName) dbg(`read`) - const { fsPath, clientPath, pathFromRootFolder } = await this._resolvePath( - fileName - ) + const { fsPath, clientPath, pathFromRootFolder } = + await this._resolvePath(fileName) const { start } = options || {} @@ -433,9 +432,8 @@ export class PhFs implements FileSystem { .breadcrumb(path) dbg(`mkdir`) - const { fsPath, clientPath, pathFromRootFolder } = await this._resolvePath( - path - ) + const { fsPath, clientPath, pathFromRootFolder } = + await this._resolvePath(path) /* Disallow making directories if not inside root folder @@ -485,7 +483,7 @@ export class PhFs implements FileSystem { Promise.all([ this.restartInstanceGuard(fromRootFolderName, instance), this.restartInstanceGuard(toRootFolderName, instance), - ]) + ]), ) } @@ -497,9 +495,8 @@ export class PhFs implements FileSystem { .breadcrumb(mode.toString()) dbg(`chmod`) - const { fsPath, clientPath, pathFromRootFolder } = await this._resolvePath( - path - ) + const { fsPath, clientPath, pathFromRootFolder } = + await this._resolvePath(path) /* Disallow making directories if not inside root folder @@ -517,7 +514,7 @@ export class PhFs implements FileSystem { async restartInstanceGuard( rootFolderName: FolderNames | undefined, - instance: InstanceFields + instance: InstanceFields, ) { // Not needed? // const { dbg, error } = this.log diff --git a/packages/daemon/src/services/FtpService/fs-async.ts b/packages/daemon/src/services/FtpService/fs-async.ts index 5da1537a..20eebe80 100644 --- a/packages/daemon/src/services/FtpService/fs-async.ts +++ b/packages/daemon/src/services/FtpService/fs-async.ts @@ -10,4 +10,4 @@ const mkdir = promisify(fs.mkdir) const rename = promisify(fs.rename) const chmod = promisify(fs.chmod) -export { stat, readdir, access, unlink, rmdir, mkdir, rename, chmod } +export { access, chmod, mkdir, readdir, rename, rmdir, stat, unlink } diff --git a/packages/daemon/src/services/InstanceLoggerService/SqliteLogger.ts b/packages/daemon/src/services/InstanceLoggerService/SqliteLogger.ts index 1c87240f..1def1b89 100644 --- a/packages/daemon/src/services/InstanceLoggerService/SqliteLogger.ts +++ b/packages/daemon/src/services/InstanceLoggerService/SqliteLogger.ts @@ -2,11 +2,11 @@ import { SqliteChangeEvent, sqliteService } from '$services' import { InstanceLogFields, InstanceLogFields_Create, + RecordId, + StreamNames, newId, pocketNow, - RecordId, safeCatch, - StreamNames, } from '@pockethost/common' import knex from 'knex' import { AsyncReturnType } from 'type-fest' @@ -15,7 +15,7 @@ import { DaemonContext } from './DaemonContext' export type SqliteLogger = AsyncReturnType export const createSqliteLogger = async ( logDbPath: string, - context: DaemonContext + context: DaemonContext, ) => { const { parentLogger } = context const _dbLogger = parentLogger.create(`${logDbPath}`) @@ -46,7 +46,7 @@ export const createSqliteLogger = async ( const sql = conn('logs').insert(_in).toString() trace(`Writing log ${JSON.stringify(_in)} ${sql}`) await db.exec(sql) - } + }, ) const subscribe = (cb: (e: SqliteChangeEvent) => void) => { @@ -66,7 +66,7 @@ export const createSqliteLogger = async ( const fetch = async (limit: number = 100) => { return db.all( - `select * from logs order by created desc limit ${limit}` + `select * from logs order by created desc limit ${limit}`, ) } diff --git a/packages/daemon/src/services/InstanceLoggerService/index.ts b/packages/daemon/src/services/InstanceLoggerService/index.ts index 2f007267..7fa059de 100644 --- a/packages/daemon/src/services/InstanceLoggerService/index.ts +++ b/packages/daemon/src/services/InstanceLoggerService/index.ts @@ -17,7 +17,7 @@ const instances: { export const createInstanceLogger = async ( instanceId: InstanceId, - context: DaemonContext + context: DaemonContext, ) => { const { parentLogger } = context const _instanceLogger = parentLogger.create(`InstanceLogger`) @@ -31,7 +31,7 @@ export const createInstanceLogger = async ( DAEMON_PB_DATA_DIR, instanceId, 'pb_data', - 'instance_logs.db' + 'instance_logs.db', ) dbg(`logs path`, logDbPath) @@ -69,5 +69,5 @@ export const instanceLoggerService = mkSingleton( dbg(`Shutting down`) }, } - } + }, ) diff --git a/packages/daemon/src/services/InstanceService/Deno/DenoProcess.ts b/packages/daemon/src/services/InstanceService/Deno/DenoProcess.ts index 2c3a5c19..58a9a719 100644 --- a/packages/daemon/src/services/InstanceService/Deno/DenoProcess.ts +++ b/packages/daemon/src/services/InstanceService/Deno/DenoProcess.ts @@ -43,7 +43,7 @@ export const createDenoProcess = async (config: DenoProcessConfig) => { const denoWrite = ( message: string, - stream: StreamNames = StreamNames.Info + stream: StreamNames = StreamNames.Info, ) => { dbg(`[${instance.id}:${path}:${stream}] ${message}`) return denoLogger.write(message, stream) @@ -76,12 +76,12 @@ export const createDenoProcess = async (config: DenoProcessConfig) => { if (code) { await denoWrite( `Unexpected 'deno' exit code: ${code}.`, - StreamNames.Error + StreamNames.Error, ) } else { await denoWrite( `Worker has exited with code ${code}`, - StreamNames.System + StreamNames.System, ) } resolve() diff --git a/packages/daemon/src/services/InstanceService/InstanceService.ts b/packages/daemon/src/services/InstanceService/InstanceService.ts index 1044a090..b15a7a7c 100644 --- a/packages/daemon/src/services/InstanceService/InstanceService.ts +++ b/packages/daemon/src/services/InstanceService/InstanceService.ts @@ -8,18 +8,18 @@ import { import { clientService, proxyService } from '$services' import { mkInternalUrl, now } from '$util' import { - assertTruthy, CLEANUP_PRIORITY_LAST, - createCleanupManager, - createTimerManager, InstanceFields, InstanceId, InstanceStatus, + SingletonBaseConfig, + StreamNames, + assertTruthy, + createCleanupManager, + createTimerManager, mkSingleton, safeCatch, serialAsyncExecutionGuard, - SingletonBaseConfig, - StreamNames, } from '@pockethost/common' import { map, values } from '@s-libs/micro-dash' import Bottleneck from 'bottleneck' @@ -30,7 +30,7 @@ import { AsyncReturnType } from 'type-fest' import { instanceLoggerService } from '../InstanceLoggerService' import { pocketbaseService } from '../PocketBaseService' import { createDenoProcess } from './Deno/DenoProcess' -import { portManager, PortManagerConfig } from './PortManager' +import { PortManagerConfig, portManager } from './PortManager' enum InstanceApiStatus { Starting = 'starting', @@ -116,13 +116,13 @@ export const instanceService = mkSingleton( const { id, subdomain, version } = instance const systemInstanceLogger = instanceServiceLogger.create( - `${subdomain}:${id}:${version}` + `${subdomain}:${id}:${version}`, ) const { dbg, warn, error, info } = systemInstanceLogger if (instanceApis[id]) { throw new Error( - `Attempted to create an instance API when one is already available for ${id}` + `Attempted to create an instance API when one is already available for ${id}`, ) } @@ -159,7 +159,7 @@ export const instanceService = mkSingleton( internalUrl: () => { if (status !== InstanceApiStatus.Healthy) { throw new Error( - `Attempt to access instance URL when instance is not in a healthy state.` + `Attempt to access instance URL when instance is not in a healthy state.`, ) } return internalUrl @@ -167,7 +167,7 @@ export const instanceService = mkSingleton( startRequest: () => { if (status !== InstanceApiStatus.Healthy) { throw new Error( - `Attempt to start an instance request when instance is not in a healthy state.` + `Attempt to start an instance request when instance is not in a healthy state.`, ) } return startRequest() @@ -198,7 +198,7 @@ export const instanceService = mkSingleton( const healthyGuard = () => { if (status !== InstanceApiStatus.ShuttingDown) return throw new Error( - `HealthyGuard detected instance is shutting down. Aborting further initialization.` + `HealthyGuard detected instance is shutting down. Aborting further initialization.`, ) } @@ -207,7 +207,7 @@ export const instanceService = mkSingleton( */ const clientLimiter = new Bottleneck({ maxConcurrent: 1 }) const updateInstanceStatus = clientLimiter.wrap( - client.updateInstanceStatus + client.updateInstanceStatus, ) const updateInstance = clientLimiter.wrap(client.updateInstance) const createInvocation = clientLimiter.wrap(client.createInvocation) @@ -240,15 +240,15 @@ export const instanceService = mkSingleton( instance.id, { parentLogger: systemInstanceLogger, - } + }, ) const writeUserLog = serialAsyncExecutionGuard( userInstanceLogger.write, - () => `${instance.id}:userLog` + () => `${instance.id}:userLog`, ) shutdownManager.add(() => - writeUserLog(`Shutting down instance`).catch(error) + writeUserLog(`Shutting down instance`).catch(error), ) /* @@ -277,7 +277,7 @@ export const instanceService = mkSingleton( version, onUnexpectedStop: (code, stdout, stderr) => { warn( - `PocketBase processes exited unexpectedly with ${code}. Putting in maintenance mode.` + `PocketBase processes exited unexpectedly with ${code}. Putting in maintenance mode.`, ) warn(stdout) warn(stderr) @@ -287,24 +287,24 @@ export const instanceService = mkSingleton( }) await writeUserLog( `Putting instance in maintenance mode because it shut down with return code ${code}. `, - StreamNames.Error + StreamNames.Error, ) await Promise.all( stdout.map((data) => - writeUserLog(data, StreamNames.Error).catch(error) - ) + writeUserLog(data, StreamNames.Error).catch(error), + ), ) await Promise.all( stderr.map((data) => - writeUserLog(data, StreamNames.Error).catch(error) - ) + writeUserLog(data, StreamNames.Error).catch(error), + ), ) }) setImmediate(() => { _safeShutdown( new Error( - `PocketBase processes exited unexpectedly with ${code}. Putting in maintenance mode.` - ) + `PocketBase processes exited unexpectedly with ${code}. Putting in maintenance mode.`, + ), ).catch(error) }) }, @@ -313,7 +313,7 @@ export const instanceService = mkSingleton( } catch (e) { warn(`Error spawning: ${e}`) throw new Error( - `Could not launch PocketBase ${instance.version}. It may be time to upgrade.` + `Could not launch PocketBase ${instance.version}. It may be time to upgrade.`, ) } })() @@ -345,7 +345,7 @@ export const instanceService = mkSingleton( DAEMON_PB_DATA_DIR, instance.id, `worker`, - `index.ts` + `index.ts`, ) dbg(`Checking ${workerPath} for a worker entry point`) if (existsSync(workerPath)) { @@ -405,7 +405,7 @@ export const instanceService = mkSingleton( } return true }), - RECHECK_TTL + RECHECK_TTL, ) } @@ -418,7 +418,7 @@ export const instanceService = mkSingleton( warn(`_pingInvocation failed with ${e}`) return true }), - 1000 + 1000, ) } @@ -442,7 +442,7 @@ export const instanceService = mkSingleton( .catch((e: ClientResponseError) => { if (e.status !== 404) { throw new Error( - `Unexpected response ${JSON.stringify(e)} from mothership` + `Unexpected response ${JSON.stringify(e)} from mothership`, ) } return [] @@ -454,9 +454,8 @@ export const instanceService = mkSingleton( } { dbg(`Trying to get instance by subdomain: ${idOrSubdomain}`) - const [instance, owner] = await client.getInstanceBySubdomain( - idOrSubdomain - ) + const [instance, owner] = + await client.getInstanceBySubdomain(idOrSubdomain) if (instance && owner) { dbg(`${idOrSubdomain} is a subdomain`) return { instance, owner } @@ -477,14 +476,14 @@ export const instanceService = mkSingleton( if (instanceIdOrSubdomain === PUBLIC_APP_DB) return const { instance, owner } = await getInstanceByIdOrSubdomain( - instanceIdOrSubdomain + instanceIdOrSubdomain, ) if (!owner) { throw new Error(`Instance owner is invalid`) } if (!instance) { throw new Error( - `Subdomain ${instanceIdOrSubdomain} does not resolve to an instance` + `Subdomain ${instanceIdOrSubdomain} does not resolve to an instance`, ) } @@ -494,7 +493,7 @@ export const instanceService = mkSingleton( dbg(`Checking for maintenance mode`) if (instance.maintenance) { throw new Error( - `This instance is in Maintenance Mode. See https://pockethost.gitbook.io/manual/daily-usage/maintenance for more information.` + `This instance is in Maintenance Mode. See https://pockethost.gitbook.io/manual/daily-usage/maintenance for more information.`, ) } @@ -504,7 +503,7 @@ export const instanceService = mkSingleton( dbg(`Checking for verified account`) if (!owner?.verified) { throw new Error( - `Log in at ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DOMAIN} to verify your account.` + `Log in at ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DOMAIN} to verify your account.`, ) } @@ -518,12 +517,12 @@ export const instanceService = mkSingleton( dbg( `Forwarding proxy request for ${ req.url - } to instance ${api.internalUrl()}` + } to instance ${api.internalUrl()}`, ) proxy.web(req, res, { target: api.internalUrl() }) }, - `InstanceService` + `InstanceService`, ) const { getNextPort } = await portManager({ maxPorts }) @@ -537,5 +536,5 @@ export const instanceService = mkSingleton( const getInstanceApiIfExistsById = (id: InstanceId) => instanceApis[id] return { shutdown, getInstanceApiIfExistsById } - } + }, ) diff --git a/packages/daemon/src/services/InstanceService/PortManager.ts b/packages/daemon/src/services/InstanceService/PortManager.ts index a65b9c36..d006bf58 100644 --- a/packages/daemon/src/services/InstanceService/PortManager.ts +++ b/packages/daemon/src/services/InstanceService/PortManager.ts @@ -37,8 +37,8 @@ export const portManager = mkSingleton(async (cfg: PortManagerConfig) => { const removed = remove(exclude, (v) => v === newPort) dbg( `Removed ${removed.join(',')} from excluded ports: ${exclude.join( - ',' - )}` + ',', + )}`, ) }, ] diff --git a/packages/daemon/src/services/PocketBaseService.ts b/packages/daemon/src/services/PocketBaseService.ts index 2467a7bd..d12721a1 100644 --- a/packages/daemon/src/services/PocketBaseService.ts +++ b/packages/daemon/src/services/PocketBaseService.ts @@ -2,8 +2,8 @@ import { DAEMON_PB_DATA_DIR, DAEMON_PB_MIGRATIONS_DIR } from '$constants' import { mkInternalAddress, mkInternalUrl, tryFetch } from '$util' import { createCleanupManager, createTimerManager } from '@pockethost/common' import { - mkSingleton, SingletonBaseConfig, + mkSingleton, } from '@pockethost/common/src/mkSingleton' import { spawn } from 'child_process' import { existsSync } from 'fs' @@ -23,7 +23,7 @@ export type SpawnConfig = { onUnexpectedStop: ( code: number | null, stdout: string[], - stderr: string[] + stderr: string[], ) => void } export type PocketbaseServiceApi = AsyncReturnType< @@ -49,7 +49,7 @@ function pidIsRunning(pid: number) { } export const createPocketbaseService = async ( - config: PocketbaseServiceConfig + config: PocketbaseServiceConfig, ) => { const { logger } = config const _serviceLogger = logger.create('PocketbaseService') @@ -77,7 +77,7 @@ export const createPocketbaseService = async ( const bin = realVersion.binPath if (!existsSync(bin)) { throw new Error( - `PocketBase binary (${bin}) not found. Contact pockethost.io.` + `PocketBase binary (${bin}) not found. Contact pockethost.io.`, ) } @@ -93,7 +93,7 @@ export const createPocketbaseService = async ( args.push( isMothership ? DAEMON_PB_MIGRATIONS_DIR - : `${DAEMON_PB_DATA_DIR}/${slug}/pb_migrations` + : `${DAEMON_PB_DATA_DIR}/${slug}/pb_migrations`, ) } if (command === 'serve') { @@ -157,7 +157,7 @@ export const createPocketbaseService = async ( const { pid } = ls if (!pid) { throw new Error( - `Attempt to kill a PocketBase process that was never running.` + `Attempt to kill a PocketBase process that was never running.`, ) } const p = new Promise((resolve, reject) => { diff --git a/packages/daemon/src/services/ProxyService.ts b/packages/daemon/src/services/ProxyService.ts index 8fb8acbc..d8fbb8ac 100644 --- a/packages/daemon/src/services/ProxyService.ts +++ b/packages/daemon/src/services/ProxyService.ts @@ -22,7 +22,7 @@ export type ProxyMiddleware = ( proxy: Server host: string }, - logger: Logger + logger: Logger, ) => void | Promise export type ProxyServiceConfig = SingletonBaseConfig & { @@ -44,7 +44,7 @@ export const proxyService = mkSingleton(async (config: ProxyServiceConfig) => { dbg(`Incoming request ${req.method} ${req.headers.host}/${req.url}`) if (!req.headers.host?.endsWith(PUBLIC_APP_DOMAIN)) { warn( - `Request for ${req.headers.host} rejected because host does not end in ${PUBLIC_APP_DOMAIN}` + `Request for ${req.headers.host} rejected because host does not end in ${PUBLIC_APP_DOMAIN}`, ) res.writeHead(502, { 'Content-Type': `text/plain`, @@ -54,7 +54,7 @@ export const proxyService = mkSingleton(async (config: ProxyServiceConfig) => { } { const { warn } = _proxyLogger.create( - `${req.method} ${req.headers.host}/${req.url}` + `${req.method} ${req.headers.host}/${req.url}`, ) try { for (let i = 0; i < middleware.length; i++) { @@ -94,7 +94,7 @@ export const proxyService = mkSingleton(async (config: ProxyServiceConfig) => { subdomainFilter: string | ((subdomain: string) => boolean), urlFilters: string | string[], handler: ProxyMiddleware, - handlerName: string + handlerName: string, ) => { const _handlerLogger = _proxyLogger.create(`${handlerName}`) const { dbg, trace } = _handlerLogger @@ -149,7 +149,7 @@ export const proxyService = mkSingleton(async (config: ProxyServiceConfig) => { req, res, { host, subdomain, coreInternalUrl, proxy }, - _requestLogger + _requestLogger, ) }) } diff --git a/packages/daemon/src/services/RealtimeLog.ts b/packages/daemon/src/services/RealtimeLog.ts index 29970245..c00c8986 100644 --- a/packages/daemon/src/services/RealtimeLog.ts +++ b/packages/daemon/src/services/RealtimeLog.ts @@ -59,7 +59,7 @@ export const realtimeLog = mkSingleton(async (config: RealtimeLogConfig) => { res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS') res.setHeader( 'Access-Control-Allow-Headers', - 'authorization,content-type,cache-control' + 'authorization,content-type,cache-control', ) res.setHeader('Access-Control-Max-Age', 86400) res.statusCode = 204 @@ -106,7 +106,7 @@ export const realtimeLog = mkSingleton(async (config: RealtimeLogConfig) => { .getOne(instanceId) if (!instance) { throw new Error( - `instanceId ${instanceId} not found for user ${user.id}` + `instanceId ${instanceId} not found for user ${user.id}`, ) } dbg(`Instance is `, instance) @@ -142,14 +142,14 @@ export const realtimeLog = mkSingleton(async (config: RealtimeLogConfig) => { const evt = mkEvent(`log`, record) trace( `Dispatching SSE log event from ${instance.subdomain} (${instance.id})`, - evt + evt, ) limiter.schedule(() => write(evt)).catch(error) }) req.on('close', () => { limiter.stop() dbg( - `SSE request for ${instance.subdomain} (${instance.id}) closed. Unsubscribing.` + `SSE request for ${instance.subdomain} (${instance.id}) closed. Unsubscribing.`, ) unsub() }) @@ -172,7 +172,7 @@ export const realtimeLog = mkSingleton(async (config: RealtimeLogConfig) => { const evt = mkEvent(`log`, rec) trace( `Dispatching SSE initial log event from ${instance.subdomain} (${instance.id})`, - evt + evt, ) return write(evt) }) @@ -186,7 +186,7 @@ export const realtimeLog = mkSingleton(async (config: RealtimeLogConfig) => { .catch(error) } }, - `RealtimeLogService` + `RealtimeLogService`, ) return { diff --git a/packages/daemon/src/services/RpcService/RpcService.ts b/packages/daemon/src/services/RpcService/RpcService.ts index 49025583..c27f253c 100644 --- a/packages/daemon/src/services/RpcService/RpcService.ts +++ b/packages/daemon/src/services/RpcService/RpcService.ts @@ -1,12 +1,12 @@ import { clientService } from '$services' import { - assertTruthy, - mkSingleton, + RPC_COMMANDS, RpcCommands, RpcFields, RpcStatus, - RPC_COMMANDS, SingletonBaseConfig, + assertTruthy, + mkSingleton, } from '@pockethost/common' import { isObject } from '@s-libs/micro-dash' import Ajv, { JSONSchemaType, ValidateFunction } from 'ajv' @@ -22,12 +22,12 @@ export type KnexApi = ReturnType export type CommandModuleInitializer = ( register: RpcServiceApi['registerCommand'], client: pocketbaseEs, - knex: KnexApi + knex: KnexApi, ) => void export type RpcRunner< TPayload extends JsonObject, - TResult extends JsonObject + TResult extends JsonObject, > = (job: RpcFields) => Promise export type RpcServiceConfig = SingletonBaseConfig & {} @@ -58,8 +58,8 @@ export const rpcService = mkSingleton(async (config: RpcServiceConfig) => { if (!RPC_COMMANDS.find((c) => c === cmd)) { throw new Error( `RPC command '${cmd}' is invalid. It must be one of: ${RPC_COMMANDS.join( - '|' - )}.` + '|', + )}.`, ) } return cmd as RpcCommands @@ -76,7 +76,7 @@ export const rpcService = mkSingleton(async (config: RpcServiceConfig) => { const { validate, run } = handler if (!validate(payload)) { throw new Error( - `Payload for ${cmd} fails validation: ${JSON.stringify(payload)}` + `Payload for ${cmd} fails validation: ${JSON.stringify(payload)}`, ) } dbg(`Running RPC ${rpc.id}`, rpc) @@ -115,11 +115,11 @@ export const rpcService = mkSingleton(async (config: RpcServiceConfig) => { const registerCommand = < TPayload extends JsonObject, - TResult extends JsonObject + TResult extends JsonObject, >( commandName: RpcCommands, schema: JSONSchemaType, - runner: RpcRunner + runner: RpcRunner, ) => { if (jobHandlers[commandName]) { throw new Error(`${commandName} job handler already registered.`) diff --git a/packages/daemon/src/services/RpcService/commands.ts b/packages/daemon/src/services/RpcService/commands.ts index 7ad3a660..e6365680 100644 --- a/packages/daemon/src/services/RpcService/commands.ts +++ b/packages/daemon/src/services/RpcService/commands.ts @@ -20,9 +20,9 @@ import { type SetInstanceMaintenanceResult, } from '@pockethost/common' import { valid, validRange } from 'semver' -import { clientService } from '../clientService/clientService' import { instanceService } from '../InstanceService/InstanceService' import { updaterService } from '../UpdaterService/UpdaterService' +import { clientService } from '../clientService/clientService' import { rpcService } from './RpcService' export const registerRpcCommands = async (logger: Logger) => { @@ -48,7 +48,7 @@ export const registerRpcCommands = async (logger: Logger) => { maintenance: false, }) return { instance } - } + }, ) registerCommand( @@ -65,7 +65,7 @@ export const registerRpcCommands = async (logger: Logger) => { } await client.updateInstance(instanceId, { version }) return { status: 'ok' } - } + }, ) registerCommand( @@ -76,7 +76,7 @@ export const registerRpcCommands = async (logger: Logger) => { const { instanceId, secrets } = payload await client.updateInstance(instanceId, { secrets }) return { status: 'ok' } - } + }, ) registerCommand( @@ -90,7 +90,7 @@ export const registerRpcCommands = async (logger: Logger) => { await client.updateInstance(instanceId, { subdomain }) dbg(`Instance updated successfully `) return {} - } + }, ) registerCommand( @@ -112,7 +112,7 @@ export const registerRpcCommands = async (logger: Logger) => { } } return {} - } + }, ) // gen:command diff --git a/packages/daemon/src/services/SqliteService/SqliteService.ts b/packages/daemon/src/services/SqliteService/SqliteService.ts index 215f0028..fafa71a2 100644 --- a/packages/daemon/src/services/SqliteService/SqliteService.ts +++ b/packages/daemon/src/services/SqliteService/SqliteService.ts @@ -5,13 +5,13 @@ import { serialAsyncExecutionGuard, SingletonBaseConfig, } from '@pockethost/common' -import { Database as SqliteDatabase, open } from 'sqlite' +import { open, Database as SqliteDatabase } from 'sqlite' import { Database } from 'sqlite3' import { JsonObject } from 'type-fest' export type SqliteUnsubscribe = () => void export type SqliteChangeHandler = ( - e: SqliteChangeEvent + e: SqliteChangeEvent, ) => void export type SqliteEventType = 'update' | 'insert' | 'delete' export type SqliteChangeEvent = { @@ -25,7 +25,7 @@ export type SqliteServiceApi = { migrate: SqliteDatabase['migrate'] exec: SqliteDatabase['exec'] subscribe: ( - cb: SqliteChangeHandler + cb: SqliteChangeHandler, ) => SqliteUnsubscribe } export type SqliteServiceConfig = SingletonBaseConfig & {} @@ -43,7 +43,7 @@ export const sqliteService = mkSingleton((config: SqliteServiceConfig) => { This function */ const _unsafe_getDatabase = async ( - filename: string + filename: string, ): Promise => { const _dbLogger = logger.create(`SqliteService`) _dbLogger.breadcrumb(filename) @@ -62,7 +62,7 @@ export const sqliteService = mkSingleton((config: SqliteServiceConfig) => { eventType: SqliteEventType, database: string, table: string, - rowId: number + rowId: number, ) => { trace(`Got a raw change event`, { eventType, @@ -73,7 +73,7 @@ export const sqliteService = mkSingleton((config: SqliteServiceConfig) => { if (eventType === 'delete') return // Not supported const record = await db.get( - `select * from ${table} where rowid = '${rowId}'` + `select * from ${table} where rowid = '${rowId}'`, ) const e: SqliteChangeEvent = { table, @@ -81,7 +81,7 @@ export const sqliteService = mkSingleton((config: SqliteServiceConfig) => { record, } fireChange(e) - } + }, ) cm.add(() => { @@ -110,7 +110,7 @@ export const sqliteService = mkSingleton((config: SqliteServiceConfig) => { } const getDatabase = serialAsyncExecutionGuard( _unsafe_getDatabase, - (fileName) => fileName + (fileName) => fileName, ) const shutdown = async () => { diff --git a/packages/daemon/src/services/UpdaterService/UpdaterService.ts b/packages/daemon/src/services/UpdaterService/UpdaterService.ts index 9ba6e114..c4793b40 100644 --- a/packages/daemon/src/services/UpdaterService/UpdaterService.ts +++ b/packages/daemon/src/services/UpdaterService/UpdaterService.ts @@ -1,9 +1,9 @@ import { downloadAndExtract, smartFetch } from '$util' import { + SingletonBaseConfig, createCleanupManager, createTimerManager, mkSingleton, - SingletonBaseConfig, } from '@pockethost/common' import { keys } from '@s-libs/micro-dash' import { chmodSync, existsSync } from 'fs' @@ -49,7 +49,7 @@ export const updaterService = mkSingleton( const check = async () => { const releases = await smartFetch( `https://api.github.com/repos/pocketbase/pocketbase/releases?per_page=100`, - join(cachePath, `releases.json`) + join(cachePath, `releases.json`), ) // dbg({ releases }) @@ -77,7 +77,7 @@ export const updaterService = mkSingleton( await Promise.all(promises) if (keys(binPaths).length === 0) { throw new Error( - `No version found, probably mismatched architecture and OS (${osName}/${cpuArchitecture})` + `No version found, probably mismatched architecture and OS (${osName}/${cpuArchitecture})`, ) } maxVersion = `~${rsort(keys(binPaths))[0]}` @@ -94,7 +94,7 @@ export const updaterService = mkSingleton( const version = maxSatisfying(keys(binPaths), semVer) if (!version) throw new Error( - `No version satisfies ${semVer} (${keys(binPaths).join(', ')})` + `No version satisfies ${semVer} (${keys(binPaths).join(', ')})`, ) const binPath = binPaths[version] if (!binPath) throw new Error(`binPath for ${version} not found`) @@ -109,5 +109,5 @@ export const updaterService = mkSingleton( getVersion, shutdown: async () => {}, } - } + }, ) diff --git a/packages/daemon/src/services/clientService/InstanceMIxin.ts b/packages/daemon/src/services/clientService/InstanceMIxin.ts index 978f0e7d..6f0a5f46 100644 --- a/packages/daemon/src/services/clientService/InstanceMIxin.ts +++ b/packages/daemon/src/services/clientService/InstanceMIxin.ts @@ -1,12 +1,12 @@ import { - assertExists, + INSTANCE_COLLECTION, InstanceFields, InstanceFields_Create, InstanceId, InstanceStatus, - INSTANCE_COLLECTION, - safeCatch, UserFields, + assertExists, + safeCatch, } from '@pockethost/common' import { reduce } from '@s-libs/micro-dash' import Bottleneck from 'bottleneck' @@ -25,7 +25,7 @@ export const createInstanceMixin = (context: MixinContext) => { const resetInstances = safeCatch(`resetRpcs`, logger, async () => rawDb(INSTANCE_COLLECTION).update({ status: InstanceStatus.Idle, - }) + }), ) const createInstance = safeCatch( @@ -35,7 +35,7 @@ export const createInstanceMixin = (context: MixinContext) => { return client .collection(INSTANCE_COLLECTION) .create(payload) - } + }, ) const getInstanceBySubdomain = safeCatch( @@ -57,12 +57,12 @@ export const createInstanceMixin = (context: MixinContext) => { .then((user) => { return [instance, user] }) - }) + }), ) const getInstanceById = async ( instanceId: InstanceId, - context?: AsyncContext + context?: AsyncContext, ): Promise<[InstanceFields, UserFields] | []> => client .collection(INSTANCE_COLLECTION) @@ -86,7 +86,7 @@ export const createInstanceMixin = (context: MixinContext) => { logger, async (instanceId: InstanceId, fields: Partial) => { await client.collection(INSTANCE_COLLECTION).update(instanceId, fields) - } + }, ) const updateInstanceStatus = safeCatch( @@ -94,7 +94,7 @@ export const createInstanceMixin = (context: MixinContext) => { logger, async (instanceId: InstanceId, status: InstanceStatus) => { await updateInstance(instanceId, { status }) - } + }, ) const getInstance = safeCatch( @@ -104,7 +104,7 @@ export const createInstanceMixin = (context: MixinContext) => { return client .collection(INSTANCE_COLLECTION) .getOne(instanceId) - } + }, ) const getInstances = safeCatch(`getInstances`, logger, async () => { @@ -129,14 +129,14 @@ export const createInstanceMixin = (context: MixinContext) => { return client .collection(INSTANCE_COLLECTION) .update(r.id, toUpdate) - }) + }), ) return c }, - [] as Promise[] + [] as Promise[], ) await Promise.all(promises) - } + }, ) const updateInstanceSeconds = safeCatch( @@ -156,7 +156,7 @@ export const createInstanceMixin = (context: MixinContext) => { assertExists(row, `Expected row here`) const secondsThisMonth = row.t await updateInstance(instanceId, { secondsThisMonth }) - } + }, ) return { diff --git a/packages/daemon/src/services/clientService/InvocationMixin.ts b/packages/daemon/src/services/clientService/InvocationMixin.ts index 887b0837..663c3383 100644 --- a/packages/daemon/src/services/clientService/InvocationMixin.ts +++ b/packages/daemon/src/services/clientService/InvocationMixin.ts @@ -9,7 +9,7 @@ import { MixinContext } from './PbClient' export const createInvocationMixin = ( context: MixinContext, - instanceApi: InstanceApi + instanceApi: InstanceApi, ) => { const { logger } = context const { dbg } = logger.create('InvocationMixin') @@ -32,7 +32,7 @@ export const createInvocationMixin = ( $cancelKey: `createInvocation:${instance.id}:${pid}`, }) return _inv - } + }, ) const pingInvocation = safeCatch( @@ -49,7 +49,7 @@ export const createInvocationMixin = ( .update(invocation.id, toUpdate) await instanceApi.updateInstanceSeconds(invocation.instanceId) return _inv - } + }, ) const finalizeInvocation = safeCatch( @@ -69,7 +69,7 @@ export const createInvocationMixin = ( .update(invocation.id, toUpdate) await instanceApi.updateInstanceSeconds(invocation.instanceId) return _inv - } + }, ) return { finalizeInvocation, pingInvocation, createInvocation } diff --git a/packages/daemon/src/services/clientService/PbClient.ts b/packages/daemon/src/services/clientService/PbClient.ts index 0d917fe8..704a17e0 100644 --- a/packages/daemon/src/services/clientService/PbClient.ts +++ b/packages/daemon/src/services/clientService/PbClient.ts @@ -18,7 +18,7 @@ export const createPbClient = (url: string, logger: Logger) => { info(`Initializing client: ${url}`) const rawDb = createRawPbClient( `${DAEMON_PB_DATA_DIR}/${PUBLIC_APP_DB}/pb_data/data.db`, - _clientLogger + _clientLogger, ) const client = new PocketBase(url) @@ -27,7 +27,7 @@ export const createPbClient = (url: string, logger: Logger) => { `adminAuthViaEmail`, _clientLogger, (email: string, password: string) => - client.admins.authWithPassword(email, password) + client.admins.authWithPassword(email, password), ) const createFirstAdmin = safeCatch( @@ -40,7 +40,7 @@ export const createPbClient = (url: string, logger: Logger) => { console.log({ email, password }) console.log(JSON.stringify(res, null, 2)) return res - }) + }), ) const context: MixinContext = { client, rawDb, logger: _clientLogger } diff --git a/packages/daemon/src/services/clientService/RpcHelper.ts b/packages/daemon/src/services/clientService/RpcHelper.ts index 85e03b3c..29a6933b 100644 --- a/packages/daemon/src/services/clientService/RpcHelper.ts +++ b/packages/daemon/src/services/clientService/RpcHelper.ts @@ -1,7 +1,7 @@ import { + RPC_COLLECTION, RpcFields, RpcStatus, - RPC_COLLECTION, safeCatch, } from '@pockethost/common' import { ClientResponseError } from 'pocketbase' @@ -31,7 +31,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { cb(e.record) }) return unsub - } + }, ) const resetRpcs = safeCatch(`resetRpcs`, logger, async () => @@ -43,7 +43,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { .update>({ status: RpcStatus.FinishedError, result: `Canceled by reset`, - }) + }), ) const incompleteRpcs = safeCatch(`incompleteRpcs`, logger, async () => { @@ -65,7 +65,7 @@ export const createRpcHelper = (config: RpcHelperConfig) => { return client .collection(RPC_COLLECTION) .update>(rpc.id, fields) - } + }, ) const setRpcStatus = safeCatch( @@ -74,12 +74,12 @@ export const createRpcHelper = (config: RpcHelperConfig) => { async ( rpc: RpcFields, status: RpcStatus, - result: JsonObject = {} + result: JsonObject = {}, ) => { return client .collection(RPC_COLLECTION) .update(rpc.id, { status, result }) - } + }, ) return { diff --git a/packages/daemon/src/services/clientService/clientService.ts b/packages/daemon/src/services/clientService/clientService.ts index e464e1cd..c720e0ec 100644 --- a/packages/daemon/src/services/clientService/clientService.ts +++ b/packages/daemon/src/services/clientService/clientService.ts @@ -31,7 +31,7 @@ export const clientService = mkSingleton(async (cfg: ClientServiceConfig) => { dbg(`Logged in`) } catch (e) { error( - `CANNOT AUTHENTICATE TO ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DB}.${PUBLIC_APP_DOMAIN}/_/` + `CANNOT AUTHENTICATE TO ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DB}.${PUBLIC_APP_DOMAIN}/_/`, ) process.exit(-1) } diff --git a/packages/daemon/src/services/index.ts b/packages/daemon/src/services/index.ts index d769b958..d68f55d9 100644 --- a/packages/daemon/src/services/index.ts +++ b/packages/daemon/src/services/index.ts @@ -1,5 +1,3 @@ -export * from './clientService/clientService' -export * from './clientService/PbClient' export * from './FtpService/FtpService' export * from './InstanceService/InstanceService' export * from './PocketBaseService' @@ -7,3 +5,5 @@ export * from './ProxyService' export * from './RealtimeLog' export * from './RpcService/RpcService' export * from './SqliteService/SqliteService' +export * from './clientService/PbClient' +export * from './clientService/clientService' diff --git a/packages/daemon/src/stresser/commands/cleanup/deleteInstance.ts b/packages/daemon/src/stresser/commands/cleanup/deleteInstance.ts index a0efcf22..904c8c2a 100644 --- a/packages/daemon/src/stresser/commands/cleanup/deleteInstance.ts +++ b/packages/daemon/src/stresser/commands/cleanup/deleteInstance.ts @@ -1,12 +1,12 @@ import { clientService } from '$services' import { - InstanceFields, INSTANCE_COLLECTION, - InvocationFields, INVOCATION_COLLECTION, - logger, - RpcFields, + InstanceFields, + InvocationFields, RPC_COLLECTION, + RpcFields, + logger, singletonAsyncExecutionGuard, } from '@pockethost/common' import Bottleneck from 'bottleneck' @@ -17,7 +17,7 @@ export const deleteInvocation = singletonAsyncExecutionGuard( const { client } = await clientService() await client.client.collection(INVOCATION_COLLECTION).delete(invocation.id) }, - (invocation) => `deleteInvocation:${invocation.id}` + (invocation) => `deleteInvocation:${invocation.id}`, ) export const deleteInvocationsForInstance = singletonAsyncExecutionGuard( @@ -50,7 +50,7 @@ export const deleteInvocationsForInstance = singletonAsyncExecutionGuard( } } }, - (instance) => `deleteInvocationsForInstance:${instance.id}` + (instance) => `deleteInvocationsForInstance:${instance.id}`, ) export const deleteRpc = singletonAsyncExecutionGuard( @@ -58,7 +58,7 @@ export const deleteRpc = singletonAsyncExecutionGuard( const { client } = await clientService() await client.client.collection(RPC_COLLECTION).delete(rpc.id) }, - (rpc) => `deleteRpc:${rpc.id}` + (rpc) => `deleteRpc:${rpc.id}`, ) export const getAllRpcs = singletonAsyncExecutionGuard( @@ -70,7 +70,7 @@ export const getAllRpcs = singletonAsyncExecutionGuard( console.log(`Loaded rpcs`) return rpcs }, - () => `getAllRpcs` + () => `getAllRpcs`, ) export const deleteRpcsForInstance = singletonAsyncExecutionGuard( @@ -80,7 +80,7 @@ export const deleteRpcsForInstance = singletonAsyncExecutionGuard( const instanceRpcs = allRpcs.filter((rpc) => rpc.payload?.instanceId === id) await Promise.all(instanceRpcs.map(deleteRpc)) }, - (instance) => `deleteRpcsForInstance:${instance.id}` + (instance) => `deleteRpcsForInstance:${instance.id}`, ) export const deleteInstance = singletonAsyncExecutionGuard( @@ -95,7 +95,7 @@ export const deleteInstance = singletonAsyncExecutionGuard( await deleteInvocationsForInstance(instance).catch((e) => { console.error( `deleteInvocationsForInstance error`, - JSON.stringify(e, null, 2) + JSON.stringify(e, null, 2), ) throw e }) @@ -110,7 +110,7 @@ export const deleteInstance = singletonAsyncExecutionGuard( }) console.log(`Instance deleted ${id}`) }, - (instance) => `deleteInstance:${instance.id}` + (instance) => `deleteInstance:${instance.id}`, ) export const deleteInstancesByFilter = singletonAsyncExecutionGuard( @@ -122,9 +122,9 @@ export const deleteInstancesByFilter = singletonAsyncExecutionGuard( const limiter = new Bottleneck({ maxConcurrent: 50 }) await Promise.all( instances.map((instance) => - limiter.schedule(() => deleteInstance(instance)) - ) + limiter.schedule(() => deleteInstance(instance)), + ), ) }, - (filter) => `deleteInstancesByFilter:${filter}` + (filter) => `deleteInstancesByFilter:${filter}`, ) diff --git a/packages/daemon/src/stresser/commands/cleanup/index.ts b/packages/daemon/src/stresser/commands/cleanup/index.ts index 4f972d98..b5d85d43 100644 --- a/packages/daemon/src/stresser/commands/cleanup/index.ts +++ b/packages/daemon/src/stresser/commands/cleanup/index.ts @@ -16,7 +16,7 @@ export const createCleanup = (context: { program: Command } & ContextBase) => { .option( `-f, --filter `, `Filter to use when deleting instances`, - `stress-%` + `stress-%`, ) .action(async () => { const options = cleanupCmd.optsWithGlobals() diff --git a/packages/daemon/src/stresser/commands/seed.ts b/packages/daemon/src/stresser/commands/seed.ts index b0e01fa8..d247fcf3 100644 --- a/packages/daemon/src/stresser/commands/seed.ts +++ b/packages/daemon/src/stresser/commands/seed.ts @@ -38,7 +38,7 @@ export const createSeed = (context: { program: Command } & ContextBase) => { `-c, --count`, `Number of new seed instances to create`, parseInt, - 10 + 10, ) .action(async () => { const options = seedCmd.optsWithGlobals() diff --git a/packages/daemon/src/stresser/commands/stress.ts b/packages/daemon/src/stresser/commands/stress.ts index 93c743d1..bc3ca2a2 100644 --- a/packages/daemon/src/stresser/commands/stress.ts +++ b/packages/daemon/src/stresser/commands/stress.ts @@ -24,25 +24,25 @@ export const createStress = (context: { program: Command } & ContextBase) => { '-ic, --instance-count ', `Number of simultaneous instances to hit`, parseInt, - 100 + 100, ) .option( '-rc, --requests-per-instance ', `Number of simultaneous requests per instance`, parseInt, - 50 + 50, ) .option( '-mind, --min-delay ', `Minimum number of milliseconds to delay before sending another request`, parseInt, - 50 + 50, ) .option( '-maxd, --max-delay ', `Maximum number of milliseconds to delay before sending another request`, parseInt, - 500 + 500, ) .action(async () => { const options = seedCmd.optsWithGlobals() @@ -63,7 +63,7 @@ export const createStress = (context: { program: Command } & ContextBase) => { if (excluded[instanceId]) return await client.updateInstance(instanceId, { maintenance: false }) }, - (id) => `reset:${id}` + (id) => `reset:${id}`, ) const instances = await client.getInstances() @@ -80,7 +80,7 @@ export const createStress = (context: { program: Command } & ContextBase) => { dbg( `There are ${instances.length} instances and ${ values(excluded).length - } excluded` + } excluded`, ) if (!instance) throw new Error(`No instance to grab`) @@ -108,7 +108,7 @@ export const createStress = (context: { program: Command } & ContextBase) => { return // Timeout } } - }) + }), ) } } catch (e) { diff --git a/packages/daemon/src/stresser/index.ts b/packages/daemon/src/stresser/index.ts index 1176b107..ab62e990 100644 --- a/packages/daemon/src/stresser/index.ts +++ b/packages/daemon/src/stresser/index.ts @@ -22,7 +22,7 @@ program .option( '-u, --mothership-url', 'URL to central database', - 'http://127.0.0.1:8090' + 'http://127.0.0.1:8090', ) createCleanup({ program, logger }) diff --git a/packages/daemon/src/util/downloadAndExtract.ts b/packages/daemon/src/util/downloadAndExtract.ts index 5627edf7..de0ac10b 100644 --- a/packages/daemon/src/util/downloadAndExtract.ts +++ b/packages/daemon/src/util/downloadAndExtract.ts @@ -7,7 +7,7 @@ import { dirname } from 'path' export function assert( v: T | undefined | void | null, - msg?: string + msg?: string, ): asserts v is T { if (!v) { throw new Error(msg || `Assertion failure`) @@ -28,7 +28,7 @@ const downloadFile = async (url: string, path: string) => { const _unsafe_downloadAndExtract = async ( url: string, binPath: string, - logger: Logger + logger: Logger, ) => { const { dbg, error } = logger.create('downloadAndExtract') @@ -48,5 +48,5 @@ const _unsafe_downloadAndExtract = async ( export const downloadAndExtract = singletonAsyncExecutionGuard( _unsafe_downloadAndExtract, - (url) => url + (url) => url, ) diff --git a/packages/daemon/src/util/smartFetch.ts b/packages/daemon/src/util/smartFetch.ts index 19560d89..35f5f9d4 100644 --- a/packages/daemon/src/util/smartFetch.ts +++ b/packages/daemon/src/util/smartFetch.ts @@ -5,7 +5,7 @@ import { dirname } from 'path' export const smartFetch = async ( url: string, - path: string + path: string, ): Promise => { const { dbg } = logger().create(`smartFetch`) diff --git a/packages/daemon/src/util/tryFetch.ts b/packages/daemon/src/util/tryFetch.ts index 81c02e1f..4094efaf 100644 --- a/packages/daemon/src/util/tryFetch.ts +++ b/packages/daemon/src/util/tryFetch.ts @@ -40,7 +40,7 @@ export const tryFetch = async (url: string, config?: Partial) => { resolve() } catch (e) { dbg( - `Could not fetch ${url}, trying again in ${retryMs}ms. Raw error ${e}` + `Could not fetch ${url}, trying again in ${retryMs}ms. Raw error ${e}`, ) setTimeout(tryFetch, retryMs) } diff --git a/packages/deno-worker/EventSource.ts b/packages/deno-worker/EventSource.ts index ae7ab864..c95b03c7 100644 --- a/packages/deno-worker/EventSource.ts +++ b/packages/deno-worker/EventSource.ts @@ -250,7 +250,7 @@ export class EventSource extends EventTarget { await new Promise((res) => { const id = setTimeout( () => res(clearTimeout(id)), - this.#settings.reconnectionTime + this.#settings.reconnectionTime, ) }) diff --git a/packages/deno-worker/index.d.ts b/packages/deno-worker/index.d.ts index a7f12f30..0551989e 100644 --- a/packages/deno-worker/index.d.ts +++ b/packages/deno-worker/index.d.ts @@ -19,7 +19,7 @@ declare class EventSource { constructor( url: string, - eventSourceInitDict?: EventSource.EventSourceInitDict + eventSourceInitDict?: EventSource.EventSourceInitDict, ) readonly CLOSED: number diff --git a/packages/deno-worker/index.ts b/packages/deno-worker/index.ts index 50dba8a7..36764713 100644 --- a/packages/deno-worker/index.ts +++ b/packages/deno-worker/index.ts @@ -23,7 +23,7 @@ export const init = (klass: typeof PocketBase) => { const adminAuthWithPassword = async ( login = ADMIN_LOGIN, - password = ADMIN_PASSWORD + password = ADMIN_PASSWORD, ) => { console.log(`Connecting to ${POCKETBASE_URL} with ${ADMIN_LOGIN}`) await client.admins.authWithPassword(login, password) diff --git a/packages/pockethost.io/.prettierrc b/packages/pockethost.io/.prettierrc deleted file mode 100644 index 0b157833..00000000 --- a/packages/pockethost.io/.prettierrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "useTabs": false, - "singleQuote": true, - "semi": false, - "trailingComma": "none", - "printWidth": 100, - "pluginSearchDirs": [".", "../.."], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ] -} diff --git a/packages/pockethost.io/src/components/AccordionItem.svelte b/packages/pockethost.io/src/components/AccordionItem.svelte index 940b9b2b..dbd175c9 100644 --- a/packages/pockethost.io/src/components/AccordionItem.svelte +++ b/packages/pockethost.io/src/components/AccordionItem.svelte @@ -10,7 +10,7 @@
-

+