mirror of
https://github.com/ivabus/gui
synced 2025-04-23 14:07:14 +03:00
parent
d7bc1d3aa9
commit
2d5adbf7d3
17 changed files with 106 additions and 45 deletions
6
.github/workflows/build-sign-notarize.yml
vendored
6
.github/workflows/build-sign-notarize.yml
vendored
|
@ -29,6 +29,8 @@ jobs:
|
||||||
is-updated: ${{ steps.check_version.outputs.updated }}
|
is-updated: ${{ steps.check_version.outputs.updated }}
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
|
with:
|
||||||
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 5
|
fetch-depth: 5
|
||||||
|
@ -69,7 +71,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
with:
|
with:
|
||||||
version: 0.31.2
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: cache node_modules build
|
- name: cache node_modules build
|
||||||
|
@ -164,7 +166,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
with:
|
with:
|
||||||
version: 0.31.2
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- run: rm -rf ./*.{dmg,zip} || true
|
- run: rm -rf ./*.{dmg,zip} || true
|
||||||
|
|
||||||
|
|
32
.github/workflows/ci.yml
vendored
32
.github/workflows/ci.yml
vendored
|
@ -45,16 +45,26 @@ jobs:
|
||||||
no preview or changes related to UI
|
no preview or changes related to UI
|
||||||
test:
|
test:
|
||||||
needs: changes
|
needs: changes
|
||||||
runs-on: ubuntu-latest
|
runs-on: macos-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
with:
|
with:
|
||||||
version: 0.31.2
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
# - name: cache node_modules build
|
||||||
|
# uses: actions/cache@v3
|
||||||
|
# with:
|
||||||
|
# key: test-ubuntu
|
||||||
|
# path: |
|
||||||
|
# ./pnpm
|
||||||
|
# ./.pnpm-store
|
||||||
|
# ./node_modules
|
||||||
|
# ./modules/desktop/node_modules
|
||||||
|
# ./modules/ui/node_modules
|
||||||
- name: cache node_modules build
|
- name: cache node_modules build
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
key: test-ubuntu
|
key: test-mac
|
||||||
path: |
|
path: |
|
||||||
./pnpm
|
./pnpm
|
||||||
./.pnpm-store
|
./.pnpm-store
|
||||||
|
@ -84,7 +94,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
with:
|
with:
|
||||||
version: 0.31.2
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cache node_modules build
|
- name: cache node_modules build
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
|
@ -105,21 +115,26 @@ jobs:
|
||||||
env:
|
env:
|
||||||
CSC_IDENTITY_AUTO_DISCOVERY: "false"
|
CSC_IDENTITY_AUTO_DISCOVERY: "false"
|
||||||
MAC_BUILD_TARGET: "dir"
|
MAC_BUILD_TARGET: "dir"
|
||||||
|
- name: setup dev
|
||||||
|
run: |
|
||||||
|
mkdir -p /Users/runner/.tea/tea.xyz/gui
|
||||||
|
touch /Users/runner/.tea/tea.xyz/gui/dev
|
||||||
- name: e2e test
|
- name: e2e test
|
||||||
run: tea -E xc e2e
|
run: tea -E xc e2e
|
||||||
|
|
||||||
build_svelte:
|
build_svelte:
|
||||||
needs: changes
|
needs: changes
|
||||||
runs-on: ubuntu-latest
|
runs-on: macos-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: teaxyz/setup@v0
|
- uses: teaxyz/setup@v0
|
||||||
with:
|
with:
|
||||||
version: 0.31.2
|
version: 0.35.7
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cache node_modules build
|
- name: cache node_modules build
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
key: ubuntu-latest-pnpm
|
# key: ubuntu-latest-pnpm
|
||||||
|
key: mac-latest-pnpm
|
||||||
path: |
|
path: |
|
||||||
./pnpm
|
./pnpm
|
||||||
./.pnpm-store
|
./.pnpm-store
|
||||||
|
@ -129,7 +144,8 @@ jobs:
|
||||||
- name: cache electron build
|
- name: cache electron build
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
key: ubuntu-latest-electron
|
key: mac-latest-electron
|
||||||
|
# key: ubuntu-latest-electron
|
||||||
path: |
|
path: |
|
||||||
./modules/desktop/.svelte-kit
|
./modules/desktop/.svelte-kit
|
||||||
./modules/desktop/build
|
./modules/desktop/build
|
||||||
|
|
|
@ -182,10 +182,10 @@ tea gh release create "v$V"
|
||||||
|
|
||||||
| Project | Version |
|
| Project | Version |
|
||||||
|-----------------------------------|-----------|
|
|-----------------------------------|-----------|
|
||||||
| nodejs.org | =18.15.0 |
|
| nodejs.org | =18.16.0 |
|
||||||
| pnpm.io | =7.18.2 |
|
| pnpm.io | =7.33.1 |
|
||||||
| xcfile.dev | >=0.0.110 |
|
| xcfile.dev | >=0.4.1 |
|
||||||
| python.org | ^3.10 |
|
| python.org | ^3.11 |
|
||||||
|
|
||||||
[`tea/cli`]: https://github.com/teaxyz/cli
|
[`tea/cli`]: https://github.com/teaxyz/cli
|
||||||
[`xc`]: https://xcfile.dev
|
[`xc`]: https://xcfile.dev
|
||||||
|
|
|
@ -9,6 +9,7 @@ import get from "./v1-client";
|
||||||
import { DeviceAuth } from "../../src/libs/types";
|
import { DeviceAuth } from "../../src/libs/types";
|
||||||
import { notifyMainWindow } from "../electron";
|
import { notifyMainWindow } from "../electron";
|
||||||
import { InitWatcher } from "./initialize";
|
import { InitWatcher } from "./initialize";
|
||||||
|
import { baseURL } from "./v1-client";
|
||||||
|
|
||||||
const sessionFilePath = path.join(getTeaPath(), "tea.xyz/gui/tmp.dat");
|
const sessionFilePath = path.join(getTeaPath(), "tea.xyz/gui/tmp.dat");
|
||||||
const sessionFolder = path.join(getTeaPath(), "tea.xyz/gui");
|
const sessionFolder = path.join(getTeaPath(), "tea.xyz/gui");
|
||||||
|
@ -75,7 +76,7 @@ let deviceIdRetryCount = 0;
|
||||||
async function getDeviceId() {
|
async function getDeviceId() {
|
||||||
let deviceId = "";
|
let deviceId = "";
|
||||||
try {
|
try {
|
||||||
const req = await axios.get<{ deviceId: string }>("https://api.tea.xyz/v1/auth/registerDevice");
|
const req = await axios.get<{ deviceId: string }>(`${baseURL}/v1/auth/registerDevice`);
|
||||||
deviceId = req.data.deviceId;
|
deviceId = req.data.deviceId;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log.error(error);
|
log.error(error);
|
||||||
|
|
|
@ -7,10 +7,11 @@ import { createReadStream, statSync } from "fs";
|
||||||
import { deepReadDir } from "./tea-dir";
|
import { deepReadDir } from "./tea-dir";
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
import { hooks } from "@teaxyz/lib";
|
import { hooks } from "@teaxyz/lib";
|
||||||
|
import { isDev } from "./auto-updater";
|
||||||
|
|
||||||
import { readSessionData, type Session } from "./auth";
|
import { readSessionData, type Session } from "./auth";
|
||||||
|
|
||||||
const base = "https://api.tea.xyz";
|
export const baseURL = isDev() ? "https://app.dev.tea.xyz" : "https://app.tea.xyz";
|
||||||
const publicHeader = { Authorization: "public" };
|
const publicHeader = { Authorization: "public" };
|
||||||
export async function get<T>(urlPath: string) {
|
export async function get<T>(urlPath: string) {
|
||||||
try {
|
try {
|
||||||
|
@ -22,7 +23,7 @@ export async function get<T>(urlPath: string) {
|
||||||
? await getHeaders(`GET/${urlPath}`, session)
|
? await getHeaders(`GET/${urlPath}`, session)
|
||||||
: publicHeader;
|
: publicHeader;
|
||||||
|
|
||||||
const url = new URL(path.join("v1", urlPath), base).toString();
|
const url = new URL(path.join("v1", urlPath), baseURL).toString();
|
||||||
// TODO: add headers
|
// TODO: add headers
|
||||||
const req = await axios.request<T>({
|
const req = await axios.request<T>({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
|
@ -49,7 +50,7 @@ export async function post<T>(urlPath: string, data: { [key: string]: any }) {
|
||||||
? await getHeaders(`GET/${urlPath}`, session)
|
? await getHeaders(`GET/${urlPath}`, session)
|
||||||
: publicHeader;
|
: publicHeader;
|
||||||
|
|
||||||
const url = new URL(path.join("v1", urlPath), base).toString();
|
const url = new URL(path.join("v1", urlPath), baseURL).toString();
|
||||||
const req = await axios.request<T>({
|
const req = await axios.request<T>({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url,
|
url,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "tea",
|
"name": "tea",
|
||||||
"version": "0.2.24",
|
"version": "0.2.25",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "tea gui app",
|
"description": "tea gui app",
|
||||||
"author": "tea.xyz",
|
"author": "tea.xyz",
|
||||||
|
@ -83,6 +83,8 @@
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@deno/shim-crypto": "^0.3.1",
|
||||||
|
"@deno/shim-deno": "^0.16.1",
|
||||||
"@electron/asar": "^3.2.3",
|
"@electron/asar": "^3.2.3",
|
||||||
"@sentry/browser": "^7.49.0",
|
"@sentry/browser": "^7.49.0",
|
||||||
"@sentry/electron": "^4.4.0",
|
"@sentry/electron": "^4.4.0",
|
||||||
|
@ -107,19 +109,23 @@
|
||||||
"electron-vite": "^1.0.18",
|
"electron-vite": "^1.0.18",
|
||||||
"electron-window-state": "^5.0.3",
|
"electron-window-state": "^5.0.3",
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
|
"is-what": "^4.1.15",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
|
"koffi": "^2.4.2",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"lorem-ipsum": "^2.0.8",
|
"lorem-ipsum": "^2.0.8",
|
||||||
"mixpanel-browser": "^2.45.0",
|
"mixpanel-browser": "^2.45.0",
|
||||||
"mkdirp": "^2.1.3",
|
"mkdirp": "^2.1.3",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"mousetrap": "^1.6.5",
|
"mousetrap": "^1.6.5",
|
||||||
|
"outdent": "^0.8.0",
|
||||||
"pushy-electron": "^1.0.11",
|
"pushy-electron": "^1.0.11",
|
||||||
"renderer": "link:@types/electron/renderer",
|
"renderer": "link:@types/electron/renderer",
|
||||||
"svelte-infinite-scroll": "^2.0.1",
|
"svelte-infinite-scroll": "^2.0.1",
|
||||||
"svelte-markdown": "^0.2.3",
|
"svelte-markdown": "^0.2.3",
|
||||||
"svelte-watch-resize": "^1.0.3",
|
"svelte-watch-resize": "^1.0.3",
|
||||||
"sveltekit-i18n": "^2.2.2",
|
"sveltekit-i18n": "^2.2.2",
|
||||||
|
"undici": "^5.22.1",
|
||||||
"upath": "^2.0.1",
|
"upath": "^2.0.1",
|
||||||
"vite-plugin-static-copy": "^0.13.1",
|
"vite-plugin-static-copy": "^0.13.1",
|
||||||
"yaml": "^2.2.1"
|
"yaml": "^2.2.1"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import { authStore } from "$libs/stores";
|
import { authStore } from "$libs/stores";
|
||||||
|
|
||||||
const { user } = authStore;
|
const { user } = authStore;
|
||||||
// const authPage = `http://localhost:3000/v1/auth/user?device_id=${authStore.deviceId}`; // https://api.tea.xyz/v1/auth/user?device_id=device_id
|
// const authPage = `http://localhost:3000/v1/auth/user?device_id=${authStore.deviceId}`; // https://app.tea.xyz/v1/auth/user?device_id=device_id
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if $user}
|
{#if $user}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { authStore } from "$libs/stores";
|
import { authStore } from "$libs/stores";
|
||||||
import { getSession } from "@native";
|
import { getSession } from "@native";
|
||||||
import { baseUrl } from "$libs/v1-client";
|
import { getBaseURL } from "$libs/v1-client";
|
||||||
import { shellOpenExternal, pollDeviceSession } from "@native";
|
import { shellOpenExternal, pollDeviceSession } from "@native";
|
||||||
import mouseLeaveDelay from "@tea/ui/lib/mouse-leave-delay";
|
import mouseLeaveDelay from "@tea/ui/lib/mouse-leave-delay";
|
||||||
const { user } = authStore;
|
const { user } = authStore;
|
||||||
|
@ -17,6 +17,7 @@
|
||||||
const session = await getSession();
|
const session = await getSession();
|
||||||
|
|
||||||
if (session && session.device_id) {
|
if (session && session.device_id) {
|
||||||
|
const baseUrl = await getBaseURL();
|
||||||
shellOpenExternal(`${baseUrl}/auth/user?device_id=${session.device_id}`);
|
shellOpenExternal(`${baseUrl}/auth/user?device_id=${session.device_id}`);
|
||||||
pollDeviceSession();
|
pollDeviceSession();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -53,6 +53,7 @@ export async function getRepoAsPackage(owner: string, repo: string): Promise<Par
|
||||||
}
|
}
|
||||||
|
|
||||||
export const trimGithubSlug = (slug: string): string => {
|
export const trimGithubSlug = (slug: string): string => {
|
||||||
const [owner, repo] = slug.split("/");
|
const gh = slug.replace("https://github.com/", "");
|
||||||
|
const [owner, repo] = gh.split("/");
|
||||||
return [owner, repo].join("/");
|
return [owner, repo].join("/");
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* thus saving us so much time
|
* thus saving us so much time
|
||||||
*
|
*
|
||||||
* primary concerns here are any method that does the following:
|
* primary concerns here are any method that does the following:
|
||||||
* - connect to remote api(api.tea.xyz) and returns a data
|
* - connect to remote api(app.tea.xyz) and returns a data
|
||||||
* - connect to a local platform api and returns a data
|
* - connect to a local platform api and returns a data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ import * as mock from "./native-mock";
|
||||||
import { PackageStates, type InstalledPackage } from "./types";
|
import { PackageStates, type InstalledPackage } from "./types";
|
||||||
|
|
||||||
import { get as apiGet } from "$libs/v1-client";
|
import { get as apiGet } from "$libs/v1-client";
|
||||||
import axios from "axios";
|
|
||||||
import withRetry from "./utils/retry";
|
import withRetry from "./utils/retry";
|
||||||
import log from "./logger";
|
import log from "./logger";
|
||||||
const { ipcRenderer, shell } = window.require("electron");
|
const { ipcRenderer, shell } = window.require("electron");
|
||||||
|
@ -26,9 +25,9 @@ const { ipcRenderer, shell } = window.require("electron");
|
||||||
export async function getDistPackages(): Promise<Package[]> {
|
export async function getDistPackages(): Promise<Package[]> {
|
||||||
try {
|
try {
|
||||||
return withRetry(async () => {
|
return withRetry(async () => {
|
||||||
const req = await axios.get<Package[]>("https://gui.tea.xyz/packages.json");
|
const packages = await apiGet<Package[]>("packages");
|
||||||
log.info("packages received:", req.data.length);
|
log.info("packages received:", packages?.length);
|
||||||
return req.data;
|
return packages || [];
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log.error("getDistPackagesList:", error);
|
log.error("getDistPackagesList:", error);
|
||||||
|
@ -136,6 +135,7 @@ export async function getPackage(packageName: string): Promise<Partial<Package>>
|
||||||
try {
|
try {
|
||||||
return await withRetry(async () => {
|
return await withRetry(async () => {
|
||||||
const data = await apiGet<Partial<Package>>(`packages/${packageName.replaceAll("/", ":")}`);
|
const data = await apiGet<Partial<Package>>(`packages/${packageName.replaceAll("/", ":")}`);
|
||||||
|
log.info("package received:", data);
|
||||||
if (data) {
|
if (data) {
|
||||||
return data;
|
return data;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* may contain fake/mock data
|
* may contain fake/mock data
|
||||||
*
|
*
|
||||||
* TODO:
|
* TODO:
|
||||||
* * make cors work with api.tea.xyz/v1
|
* * make cors work with app.tea.xyz/v1
|
||||||
*/
|
*/
|
||||||
import type { Package, Review, AirtablePost, Bottle } from "@tea/ui/types";
|
import type { Package, Review, AirtablePost, Bottle } from "@tea/ui/types";
|
||||||
import type { GUIPackage, Session, Packages, AutoUpdateStatus } from "./types";
|
import type { GUIPackage, Session, Packages, AutoUpdateStatus } from "./types";
|
||||||
|
@ -11,9 +11,6 @@ import { PackageStates } from "./types";
|
||||||
import { loremIpsum } from "lorem-ipsum";
|
import { loremIpsum } from "lorem-ipsum";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
|
|
||||||
// import { getSession } from '$libs/stores/auth';
|
|
||||||
import * as v1Client from "$libs/v1-client";
|
|
||||||
|
|
||||||
const packages: Package[] = [
|
const packages: Package[] = [
|
||||||
{
|
{
|
||||||
slug: "mesonbuild_com",
|
slug: "mesonbuild_com",
|
||||||
|
|
|
@ -120,14 +120,14 @@ To read more about this package go to [${guiPkg.homepage}](${guiPkg.homepage}).
|
||||||
type: "md"
|
type: "md"
|
||||||
},
|
},
|
||||||
synced: true,
|
synced: true,
|
||||||
github: pkg.github
|
github_url: pkg.github_url
|
||||||
? trimGithubSlug(pkg.github)
|
? trimGithubSlug(pkg.github_url)
|
||||||
: pkg.full_name?.includes("github.com")
|
: pkg.full_name?.includes("github.com")
|
||||||
? trimGithubSlug(pkg.full_name.split("github.com/")[1])
|
? trimGithubSlug(pkg.full_name.split("github.com/")[1])
|
||||||
: ""
|
: ""
|
||||||
};
|
};
|
||||||
if (updatedPackage.github) {
|
if (updatedPackage.github_url) {
|
||||||
const [owner, repo] = updatedPackage.github.split("/");
|
const [owner, repo] = updatedPackage.github_url.split("/");
|
||||||
const [readme, contributors, repoData] = await Promise.all([
|
const [readme, contributors, repoData] = await Promise.all([
|
||||||
getReadme(owner, repo),
|
getReadme(owner, repo),
|
||||||
getContributors(owner, repo),
|
getContributors(owner, repo),
|
||||||
|
|
|
@ -1,24 +1,29 @@
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import type { Session } from "$libs/types";
|
|
||||||
import bcrypt from "bcryptjs";
|
|
||||||
import { getSession } from "$libs/stores/auth";
|
|
||||||
import { getHeaders } from "@native";
|
import { getHeaders } from "@native";
|
||||||
import log from "./logger";
|
import log from "./logger";
|
||||||
|
|
||||||
export const baseUrl = "https://api.tea.xyz/v1";
|
import { isDev } from "@native";
|
||||||
|
|
||||||
|
let dev = false;
|
||||||
|
export const getBaseURL = async (): Promise<string> => {
|
||||||
|
if (dev) return "https://app.dev.tea.xyz";
|
||||||
|
const notProd = await isDev();
|
||||||
|
dev = notProd;
|
||||||
|
return notProd ? "https://app.dev.tea.xyz" : "https://app.tea.xyz";
|
||||||
|
};
|
||||||
|
|
||||||
export async function get<T>(
|
export async function get<T>(
|
||||||
urlPath: string,
|
urlPath: string,
|
||||||
params?: { [key: string]: string }
|
params?: { [key: string]: string }
|
||||||
): Promise<T | null> {
|
): Promise<T | null> {
|
||||||
log.info(`GET /v1/${urlPath}`);
|
log.info(`GET /v1/${urlPath}`);
|
||||||
|
const baseURL = await getBaseURL();
|
||||||
const headers = await getHeaders(`GET/${urlPath}`);
|
const headers = await getHeaders(`GET/${urlPath}`);
|
||||||
delete headers["User-Agent"]; // this is in the browser, not allowed to modify UserAgent
|
delete headers["User-Agent"]; // this is in the browser, not allowed to modify UserAgent
|
||||||
|
|
||||||
const req = await axios.request({
|
const req = await axios.request({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
baseURL: "https://api.tea.xyz",
|
baseURL,
|
||||||
url: ["v1", ...urlPath.split("/")].filter((p) => p).join("/"),
|
url: ["v1", ...urlPath.split("/")].filter((p) => p).join("/"),
|
||||||
headers,
|
headers,
|
||||||
params,
|
params,
|
||||||
|
|
|
@ -9,6 +9,7 @@ describe("basic smoke test", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
utils = setupUtils(browser);
|
utils = setupUtils(browser);
|
||||||
await utils.goHome();
|
await utils.goHome();
|
||||||
|
await (await utils.screen.findByText("Stable Diffusion web UI")).waitForExist();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("install brewkit from the made by tea tab", async () => {
|
it("install brewkit from the made by tea tab", async () => {
|
||||||
|
|
|
@ -93,8 +93,8 @@ export function setupUtils(browser: WebdriverIO.Browser) {
|
||||||
slug: string,
|
slug: string,
|
||||||
state: "INSTALLED" | "UPDATE" | "UPDATED" = "INSTALLED"
|
state: "INSTALLED" | "UPDATE" | "UPDATED" = "INSTALLED"
|
||||||
) => {
|
) => {
|
||||||
// wait 30 seconds for the badge to show up
|
// wait 60 seconds for the badge to show up
|
||||||
for (let i = 0; i < 30; i++) {
|
for (let i = 0; i < 60; i++) {
|
||||||
const badge = await findByTestId(`install-badge-${slug}`);
|
const badge = await findByTestId(`install-badge-${slug}`);
|
||||||
expect(badge).toExist();
|
expect(badge).toExist();
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,8 @@ export interface Package {
|
||||||
license?: string;
|
license?: string;
|
||||||
size_bytes?: number;
|
size_bytes?: number;
|
||||||
documentation_url?: string;
|
documentation_url?: string;
|
||||||
github?: string;
|
github?: string; // TODO: remove this eventually
|
||||||
|
github_url?: string;
|
||||||
contributors?: Contributor[];
|
contributors?: Contributor[];
|
||||||
readme?: {
|
readme?: {
|
||||||
data: string;
|
data: string;
|
||||||
|
|
|
@ -14,6 +14,8 @@ importers:
|
||||||
|
|
||||||
modules/desktop:
|
modules/desktop:
|
||||||
specifiers:
|
specifiers:
|
||||||
|
'@deno/shim-crypto': ^0.3.1
|
||||||
|
'@deno/shim-deno': ^0.16.1
|
||||||
'@electron/asar': ^3.2.3
|
'@electron/asar': ^3.2.3
|
||||||
'@electron/notarize': ^1.2.3
|
'@electron/notarize': ^1.2.3
|
||||||
'@playwright/experimental-ct-svelte': ^1.29.2
|
'@playwright/experimental-ct-svelte': ^1.29.2
|
||||||
|
@ -70,14 +72,17 @@ importers:
|
||||||
eslint-config-prettier: ^8.3.0
|
eslint-config-prettier: ^8.3.0
|
||||||
eslint-plugin-svelte3: ^4.0.0
|
eslint-plugin-svelte3: ^4.0.0
|
||||||
fuse.js: ^6.6.2
|
fuse.js: ^6.6.2
|
||||||
|
is-what: ^4.1.15
|
||||||
js-yaml: ^4.1.0
|
js-yaml: ^4.1.0
|
||||||
jsdom: ^21.0.0
|
jsdom: ^21.0.0
|
||||||
|
koffi: ^2.4.2
|
||||||
lodash: ^4.17.21
|
lodash: ^4.17.21
|
||||||
lorem-ipsum: ^2.0.8
|
lorem-ipsum: ^2.0.8
|
||||||
mixpanel-browser: ^2.45.0
|
mixpanel-browser: ^2.45.0
|
||||||
mkdirp: ^2.1.3
|
mkdirp: ^2.1.3
|
||||||
moment: ^2.29.4
|
moment: ^2.29.4
|
||||||
mousetrap: ^1.6.5
|
mousetrap: ^1.6.5
|
||||||
|
outdent: ^0.8.0
|
||||||
postcss: ^8.4.19
|
postcss: ^8.4.19
|
||||||
prettier: ^2.8.8
|
prettier: ^2.8.8
|
||||||
prettier-plugin-svelte: ^2.10.0
|
prettier-plugin-svelte: ^2.10.0
|
||||||
|
@ -96,6 +101,7 @@ importers:
|
||||||
ts-node: ^10.9.1
|
ts-node: ^10.9.1
|
||||||
tslib: ^2.3.1
|
tslib: ^2.3.1
|
||||||
typescript: ^4.7.4
|
typescript: ^4.7.4
|
||||||
|
undici: ^5.22.1
|
||||||
upath: ^2.0.1
|
upath: ^2.0.1
|
||||||
vite: ^4.1.1
|
vite: ^4.1.1
|
||||||
vite-plugin-static-copy: ^0.13.1
|
vite-plugin-static-copy: ^0.13.1
|
||||||
|
@ -103,6 +109,8 @@ importers:
|
||||||
wdio-electron-service: ^4.0.2
|
wdio-electron-service: ^4.0.2
|
||||||
yaml: ^2.2.1
|
yaml: ^2.2.1
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@deno/shim-crypto': 0.3.1
|
||||||
|
'@deno/shim-deno': 0.16.1
|
||||||
'@electron/asar': 3.2.4
|
'@electron/asar': 3.2.4
|
||||||
'@sentry/browser': 7.51.2
|
'@sentry/browser': 7.51.2
|
||||||
'@sentry/electron': 4.5.0
|
'@sentry/electron': 4.5.0
|
||||||
|
@ -127,19 +135,23 @@ importers:
|
||||||
electron-vite: 1.0.22_vite@4.3.5
|
electron-vite: 1.0.22_vite@4.3.5
|
||||||
electron-window-state: 5.0.3
|
electron-window-state: 5.0.3
|
||||||
fuse.js: 6.6.2
|
fuse.js: 6.6.2
|
||||||
|
is-what: 4.1.15
|
||||||
js-yaml: 4.1.0
|
js-yaml: 4.1.0
|
||||||
|
koffi: 2.4.2
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
lorem-ipsum: 2.0.8
|
lorem-ipsum: 2.0.8
|
||||||
mixpanel-browser: 2.47.0
|
mixpanel-browser: 2.47.0
|
||||||
mkdirp: 2.1.6
|
mkdirp: 2.1.6
|
||||||
moment: 2.29.4
|
moment: 2.29.4
|
||||||
mousetrap: 1.6.5
|
mousetrap: 1.6.5
|
||||||
|
outdent: 0.8.0
|
||||||
pushy-electron: 1.0.11
|
pushy-electron: 1.0.11
|
||||||
renderer: link:@types/electron/renderer
|
renderer: link:@types/electron/renderer
|
||||||
svelte-infinite-scroll: 2.0.1
|
svelte-infinite-scroll: 2.0.1
|
||||||
svelte-markdown: 0.2.3_svelte@3.59.1
|
svelte-markdown: 0.2.3_svelte@3.59.1
|
||||||
svelte-watch-resize: 1.0.3
|
svelte-watch-resize: 1.0.3
|
||||||
sveltekit-i18n: 2.2.2_svelte@3.59.1
|
sveltekit-i18n: 2.2.2_svelte@3.59.1
|
||||||
|
undici: 5.22.1
|
||||||
upath: 2.0.1
|
upath: 2.0.1
|
||||||
vite-plugin-static-copy: 0.13.1_vite@4.3.5
|
vite-plugin-static-copy: 0.13.1_vite@4.3.5
|
||||||
yaml: 2.2.2
|
yaml: 2.2.2
|
||||||
|
@ -3552,7 +3564,7 @@ packages:
|
||||||
sirv: 2.0.3
|
sirv: 2.0.3
|
||||||
svelte: 3.59.1
|
svelte: 3.59.1
|
||||||
tiny-glob: 0.2.9
|
tiny-glob: 0.2.9
|
||||||
undici: 5.22.0
|
undici: 5.22.1
|
||||||
vite: 4.3.5
|
vite: 4.3.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -8406,6 +8418,11 @@ packages:
|
||||||
engines: {node: '>=12.13'}
|
engines: {node: '>=12.13'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/is-what/4.1.15:
|
||||||
|
resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==}
|
||||||
|
engines: {node: '>=12.13'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-wsl/2.2.0:
|
/is-wsl/2.2.0:
|
||||||
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
|
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -8841,6 +8858,11 @@ packages:
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/koffi/2.4.2:
|
||||||
|
resolution: {integrity: sha512-XDAev7zupyLwj9ze/4728T7NSHbnYXEptFrQuiEJS3ou8RJYp86HkXjqD9oNYoc4wWWAjeJtPJsRQfRVA/iqvg==}
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ky/0.33.3:
|
/ky/0.33.3:
|
||||||
resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==}
|
resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==}
|
||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
|
@ -12300,6 +12322,13 @@ packages:
|
||||||
engines: {node: '>=14.0'}
|
engines: {node: '>=14.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/undici/5.22.1:
|
||||||
|
resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==}
|
||||||
|
engines: {node: '>=14.0'}
|
||||||
|
dependencies:
|
||||||
|
busboy: 1.6.0
|
||||||
|
|
||||||
/unfetch/4.2.0:
|
/unfetch/4.2.0:
|
||||||
resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
|
resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
|
||||||
|
|
Loading…
Reference in a new issue