From 751ceab04ed7a3a98a6e8fade73c32a0b69f4ccc Mon Sep 17 00:00:00 2001 From: Lucy Cifferello <12953208+elvece@users.noreply.github.com> Date: Thu, 12 Sep 2024 17:48:57 -0400 Subject: [PATCH 1/8] fix icons and flavor filtering --- core/README.md | 2 +- package-lock.json | 2 +- web/package-lock.json | 11 +++--- web/projects/marketplace/package.json | 2 +- .../src/modals/release-notes.component.ts | 2 +- .../src/pages/list/item/item.component.html | 16 ++------ .../src/pages/list/item/item.component.ts | 24 +++--------- .../show/additional/additional.component.html | 2 +- .../dependencies/dependency-item.component.ts | 37 +++---------------- .../src/pages/show/hero/hero.component.ts | 36 ++++-------------- .../src/services/marketplace.service.ts | 2 +- web/projects/shared/package.json | 8 ++-- .../marketplace/modals/preview.component.ts | 15 +++----- 13 files changed, 45 insertions(+), 114 deletions(-) diff --git a/core/README.md b/core/README.md index 76f4d4c86..1a66748f6 100644 --- a/core/README.md +++ b/core/README.md @@ -14,7 +14,7 @@ ## Artifacts The StartOS backend is packed into a single binary `startbox` that is symlinked under -several different names for different behaviour: +several different names for different behavior: - `startd`: This is the main daemon of StartOS - `start-cli`: This is a CLI tool that will allow you to issue commands to diff --git a/package-lock.json b/package-lock.json index 497f28c49..91aecd13f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "embassy-os", + "name": "start-os-next-major", "lockfileVersion": 2, "requires": true, "packages": {} diff --git a/web/package-lock.json b/web/package-lock.json index f86534510..3a9c7eeb5 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1982,7 +1982,7 @@ }, "../sdk/dist": { "name": "@start9labs/start-sdk", - "version": "0.3.6-alpha6", + "version": "0.3.6-alpha8", "license": "MIT", "dependencies": { "@iarna/toml": "^2.2.5", @@ -1995,10 +1995,8 @@ "yaml": "^2.2.2" }, "devDependencies": { - "@iarna/toml": "^2.2.5", "@types/jest": "^29.4.0", "@types/lodash.merge": "^4.6.2", - "copyfiles": "^2.4.1", "jest": "^29.4.3", "peggy": "^3.0.2", "prettier": "^3.2.5", @@ -2006,8 +2004,7 @@ "ts-node": "^10.9.1", "ts-pegjs": "^4.2.1", "tsx": "^4.7.1", - "typescript": "^5.0.4", - "yaml": "^2.2.2" + "typescript": "^5.0.4" } }, "node_modules/@ampproject/remapping": { @@ -4922,6 +4919,7 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -7546,6 +7544,7 @@ }, "node_modules/encoding": { "version": "0.1.13", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -7554,6 +7553,7 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -8152,6 +8152,7 @@ }, "node_modules/fsevents": { "version": "2.3.3", + "dev": true, "license": "MIT", "optional": true, "os": [ diff --git a/web/projects/marketplace/package.json b/web/projects/marketplace/package.json index 969f5c56a..e187343e0 100644 --- a/web/projects/marketplace/package.json +++ b/web/projects/marketplace/package.json @@ -1,6 +1,6 @@ { "name": "@start9labs/marketplace", - "version": "0.3.28", + "version": "0.3.29", "peerDependencies": { "@angular/common": ">=13.2.0", "@angular/core": ">=13.2.0", diff --git a/web/projects/marketplace/src/modals/release-notes.component.ts b/web/projects/marketplace/src/modals/release-notes.component.ts index d9110d2cd..441cb1b50 100644 --- a/web/projects/marketplace/src/modals/release-notes.component.ts +++ b/web/projects/marketplace/src/modals/release-notes.component.ts @@ -1,6 +1,5 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' -import { MarketplacePkg } from '@start9labs/marketplace' import { Exver, MarkdownPipeModule } from '@start9labs/shared' import { TuiButton, TuiDialogContext, TuiLoader } from '@taiga-ui/core' import { TuiAccordion } from '@taiga-ui/kit' @@ -10,6 +9,7 @@ import { } from '@taiga-ui/polymorpheus' import { map } from 'rxjs' import { AbstractMarketplaceService } from '../services/marketplace.service' +import { MarketplacePkg } from '../../src/types' @Component({ standalone: true, diff --git a/web/projects/marketplace/src/pages/list/item/item.component.html b/web/projects/marketplace/src/pages/list/item/item.component.html index cd3215b6f..a46b00f9c 100644 --- a/web/projects/marketplace/src/pages/list/item/item.component.html +++ b/web/projects/marketplace/src/pages/list/item/item.component.html @@ -1,22 +1,12 @@ -
+
- {{ pkg.title }} Icon + {{ pkg.title }} Icon
- {{ pkg.title }} Icon + {{ pkg.title }} Icon
{{ pkg.title }} diff --git a/web/projects/marketplace/src/pages/list/item/item.component.ts b/web/projects/marketplace/src/pages/list/item/item.component.ts index a3e439dcd..bc0baf188 100644 --- a/web/projects/marketplace/src/pages/list/item/item.component.ts +++ b/web/projects/marketplace/src/pages/list/item/item.component.ts @@ -1,11 +1,5 @@ -import { - ChangeDetectionStrategy, - Component, - Input, - inject, -} from '@angular/core' -import { MarketplacePkg, StoreIdentity } from '../../../types' -import { AbstractMarketplaceService } from '../../../services/marketplace.service' +import { ChangeDetectionStrategy, Component, Input } from '@angular/core' +import { MarketplacePkg } from '../../../types' @Component({ selector: 'marketplace-item', @@ -17,15 +11,9 @@ export class ItemComponent { @Input({ required: true }) pkg!: MarketplacePkg - private readonly marketplaceService = inject(AbstractMarketplaceService) - readonly marketplace$ = this.marketplaceService.getSelectedHost$() - - determineIcon(marketplace: StoreIdentity | null): string { - try { - const iconUrl = new URL(this.pkg.icon) - return iconUrl.href - } catch (e) { - return `${marketplace?.url}package/v0/icon/${this.pkg.id}` - } + determineIcon(): string { + return this.pkg.icon + ? this.pkg.icon + : 'assets/img/service-icons/fallback.png' } } diff --git a/web/projects/marketplace/src/pages/show/additional/additional.component.html b/web/projects/marketplace/src/pages/show/additional/additional.component.html index 389ed2586..654c45fa1 100644 --- a/web/projects/marketplace/src/pages/show/additional/additional.component.html +++ b/web/projects/marketplace/src/pages/show/additional/additional.component.html @@ -36,7 +36,7 @@ /> - +
+
@@ -117,24 +107,9 @@ export class MarketplaceDepItemComponent { @Input({ required: true }) dep!: KeyValue - private readonly marketplaceService = inject(AbstractMarketplaceService) - readonly marketplace$ = this.marketplaceService.getSelectedHost$() - - getImage(key: string, marketplace: StoreIdentity | null) { + getImage(key: string) { const icon = this.pkg.dependencyMetadata[key]?.icon - const camelToSnakeCase = (str: string) => - str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`) - - if (icon) { - try { - const iconUrl = new URL(icon) - return iconUrl.href - } catch (e) { - return `${marketplace?.url}package/v0/icon/${camelToSnakeCase(key)}` - } - } else { - return key.substring(0, 2) - } + return icon ? icon : 'assets/img/service-icons/fallback.png' } getTitle(key: string): string { diff --git a/web/projects/marketplace/src/pages/show/hero/hero.component.ts b/web/projects/marketplace/src/pages/show/hero/hero.component.ts index e79dd6a8f..915d5aaad 100644 --- a/web/projects/marketplace/src/pages/show/hero/hero.component.ts +++ b/web/projects/marketplace/src/pages/show/hero/hero.component.ts @@ -1,31 +1,18 @@ import { CommonModule } from '@angular/common' -import { - ChangeDetectionStrategy, - Component, - inject, - Input, -} from '@angular/core' +import { ChangeDetectionStrategy, Component, Input } from '@angular/core' import { SharedPipesModule, TickerModule } from '@start9labs/shared' import { TuiLet } from '@taiga-ui/cdk' -import { AbstractMarketplaceService } from '../../../services/marketplace.service' -import { MarketplacePkg, StoreIdentity } from '../../../types' @Component({ selector: 'marketplace-package-hero', template: ` -
+
- {{ pkg.title }} Icon + {{ pkg.title }} Icon
- {{ pkg.title }} background image + {{ pkg.title }} background image
@@ -158,7 +145,6 @@ import { MarketplacePkg, StoreIdentity } from '../../../types' imports: [CommonModule, SharedPipesModule, TickerModule, TuiLet], }) export class MarketplacePackageHeroComponent { - // @TODO Matt this used to be MarketplacePkg @Input({ required: true }) pkg!: { id: string @@ -168,15 +154,9 @@ export class MarketplacePackageHeroComponent { icon: string } - private readonly marketplaceService = inject(AbstractMarketplaceService) - readonly marketplace$ = this.marketplaceService.getSelectedHost$() - - determineIcon(marketplace: StoreIdentity | null) { - try { - const iconUrl = new URL(this.pkg.icon) - return iconUrl.href - } catch (e) { - return `${marketplace?.url}package/v0/icon/${this.pkg.id}` - } + determineIcon() { + return this.pkg.icon + ? this.pkg.icon + : 'assets/img/service-icons/fallback.png' } } diff --git a/web/projects/marketplace/src/services/marketplace.service.ts b/web/projects/marketplace/src/services/marketplace.service.ts index fb5225c93..f0f3c1a81 100644 --- a/web/projects/marketplace/src/services/marketplace.service.ts +++ b/web/projects/marketplace/src/services/marketplace.service.ts @@ -1,5 +1,5 @@ import { Observable } from 'rxjs' -import { Marketplace, MarketplacePkg, StoreData, StoreIdentity } from '../types' +import { MarketplacePkg, Marketplace, StoreData, StoreIdentity } from '../types' export abstract class AbstractMarketplaceService { abstract getKnownHosts$(): Observable diff --git a/web/projects/shared/package.json b/web/projects/shared/package.json index 0a8f52d9a..a14ed5991 100644 --- a/web/projects/shared/package.json +++ b/web/projects/shared/package.json @@ -1,10 +1,10 @@ { "name": "@start9labs/shared", - "version": "0.3.13", + "version": "0.3.14", "peerDependencies": { - "@angular/common": "^17.0.6", - "@angular/core": "^17.0.6", - "@angular/router": "^17.0.6", + "@angular/common": ">=13.2.0", + "@angular/core": ">=13.2.0", + "@angular/router": ">=13.2.0", "@ng-web-apis/mutation-observer": ">=4.0.0", "@ng-web-apis/resize-observer": ">=4.0.0", "@taiga-ui/cdk": "4.0.0-rc.7", diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/preview.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/preview.component.ts index 53a91ccd7..d36e06e93 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/preview.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/preview.component.ts @@ -31,11 +31,9 @@ import { BehaviorSubject, combineLatest, filter, - firstValueFrom, map, startWith, switchMap, - tap, } from 'rxjs' @Component({ @@ -204,15 +202,14 @@ export class MarketplacePreviewComponent { readonly flavors$ = this.flavor$.pipe( switchMap(current => - this.marketplaceService - .getSelectedStore$() - .pipe( - map(({ packages }) => - packages.filter( - ({ id, flavor }) => id === this.pkgId && flavor !== current, - ), + this.marketplaceService.getSelectedStore$().pipe( + map(({ packages }) => + packages.filter( + ({ id, flavor }) => id === this.pkgId && flavor !== current, ), ), + filter(p => p.length > 0), + ), ), ) From f868a454d90e7d16da2abe6781077cb1def69b18 Mon Sep 17 00:00:00 2001 From: Lucy Cifferello <12953208+elvece@users.noreply.github.com> Date: Thu, 19 Sep 2024 13:18:16 -0400 Subject: [PATCH 2/8] move registry component to shared marketplace lib --- .../src}/components/registry.component.ts | 14 +++++--------- web/projects/marketplace/src/public-api.ts | 1 + .../marketplace/modals/registry.component.ts | 6 +++++- 3 files changed, 11 insertions(+), 10 deletions(-) rename web/projects/{ui/src/app/routes/portal/routes/system/marketplace => marketplace/src}/components/registry.component.ts (73%) diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts b/web/projects/marketplace/src/components/registry.component.ts similarity index 73% rename from web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts rename to web/projects/marketplace/src/components/registry.component.ts index 6dd4bee97..acdfe300b 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts +++ b/web/projects/marketplace/src/components/registry.component.ts @@ -1,12 +1,7 @@ -import { - ChangeDetectionStrategy, - Component, - inject, - Input, -} from '@angular/core' -import { StoreIconComponentModule } from '@start9labs/marketplace' +import { ChangeDetectionStrategy, Component, Input } from '@angular/core' import { TuiIcon, TuiTitle } from '@taiga-ui/core' -import { ConfigService } from 'src/app/services/config.service' +import { StoreIconComponentModule } from './store-icon/store-icon.component.module' +import { MarketplaceConfig } from '@start9labs/shared' @Component({ standalone: true, @@ -28,7 +23,8 @@ import { ConfigService } from 'src/app/services/config.service' imports: [StoreIconComponentModule, TuiIcon, TuiTitle], }) export class MarketplaceRegistryComponent { - readonly marketplace = inject(ConfigService).marketplace + @Input() + marketplace!: MarketplaceConfig @Input() registry!: { url: string; selected: boolean; name?: string } diff --git a/web/projects/marketplace/src/public-api.ts b/web/projects/marketplace/src/public-api.ts index 17d76eee3..1a2a3e42d 100644 --- a/web/projects/marketplace/src/public-api.ts +++ b/web/projects/marketplace/src/public-api.ts @@ -27,6 +27,7 @@ export * from './components/store-icon/store-icon.component.module' export * from './components/store-icon/store-icon.component' export * from './components/menu/menu.component.module' export * from './components/menu/menu.component' +export * from './components/registry.component' export * from './services/marketplace.service' export * from './services/category.service' diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/registry.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/registry.component.ts index cd4e7feb3..8326aec8f 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/registry.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/modals/registry.component.ts @@ -11,6 +11,7 @@ import { import { AbstractMarketplaceService, StoreIconComponentModule, + MarketplaceRegistryComponent, } from '@start9labs/marketplace' import { TuiDialogService, TuiIcon, TuiTitle, TuiButton } from '@taiga-ui/core' import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' @@ -21,8 +22,8 @@ import { ApiService } from 'src/app/services/api/embassy-api.service' import { DataModel, UIStore } from 'src/app/services/patch-db/data-model' import { MarketplaceService } from 'src/app/services/marketplace.service' import { FormDialogService } from 'src/app/services/form-dialog.service' -import { MarketplaceRegistryComponent } from '../components/registry.component' import { getMarketplaceValueSpec, getPromptOptions } from '../utils/registry' +import { ConfigService } from 'src/app/services/config.service' @Component({ standalone: true, @@ -33,6 +34,7 @@ import { getMarketplaceValueSpec, getPromptOptions } from '../utils/registry' @@ -47,6 +49,7 @@ import { getMarketplaceValueSpec, getPromptOptions } from '../utils/registry'

About

@@ -11,6 +17,8 @@ *ngIf="pkg.marketingSite as url" tuiButton iconEnd="@tui.external-link" + size="s" + appearance="glass" target="_blank" rel="noreferrer" [href]="url" From 88d9388be27727c2bcde1965508189daa5dffc00 Mon Sep 17 00:00:00 2001 From: Lucy Cifferello <12953208+elvece@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:51:19 -0400 Subject: [PATCH 8/8] remote package lock from root --- package-lock.json | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 91aecd13f..000000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "start-os-next-major", - "lockfileVersion": 2, - "requires": true, - "packages": {} -}