@serve.zone/appstore 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +44 -0
- package/apps/adminer/app.json +10 -0
- package/apps/adminer/versions/1.0.0/config.json +4 -0
- package/apps/cloudly/app.json +14 -0
- package/apps/cloudly/versions/1.0.0/config.json +101 -0
- package/apps/ghost/app.json +10 -0
- package/apps/ghost/versions/1.0.0/config.json +16 -0
- package/apps/gitea/app.json +10 -0
- package/apps/gitea/versions/1.0.0/config.json +14 -0
- package/apps/gitops/app.json +14 -0
- package/apps/gitops/versions/1.0.0/config.json +26 -0
- package/apps/grafana/app.json +10 -0
- package/apps/grafana/versions/1.0.0/config.json +7 -0
- package/apps/mariadb/app.json +10 -0
- package/apps/mariadb/versions/1.0.0/config.json +7 -0
- package/apps/mattermost/app.json +10 -0
- package/apps/mattermost/versions/1.0.0/config.json +4 -0
- package/apps/n8n/app.json +10 -0
- package/apps/n8n/versions/1.0.0/config.json +4 -0
- package/apps/nextcloud/app.json +10 -0
- package/apps/nextcloud/versions/1.0.0/config.json +14 -0
- package/apps/nginx/app.json +10 -0
- package/apps/nginx/versions/1.0.0/config.json +4 -0
- package/apps/plausible/app.json +10 -0
- package/apps/plausible/versions/1.0.0/config.json +7 -0
- package/apps/portainer/app.json +10 -0
- package/apps/portainer/versions/1.0.0/config.json +4 -0
- package/apps/postgres/app.json +10 -0
- package/apps/postgres/versions/1.0.0/config.json +9 -0
- package/apps/redis/app.json +10 -0
- package/apps/redis/versions/1.0.0/config.json +4 -0
- package/apps/rustdesk-server/app.json +14 -0
- package/apps/rustdesk-server/versions/1.0.0/config.json +17 -0
- package/apps/siprouter/app.json +14 -0
- package/apps/siprouter/versions/1.0.0/config.json +78 -0
- package/apps/uptime-kuma/app.json +10 -0
- package/apps/uptime-kuma/versions/1.0.0/config.json +4 -0
- package/apps/vaultwarden/app.json +10 -0
- package/apps/vaultwarden/versions/1.0.0/config.json +4 -0
- package/apps/wordpress/app.json +10 -0
- package/apps/wordpress/versions/1.0.0/config.json +13 -0
- package/appstore.json +191 -0
- package/changelog.md +14 -0
- package/dist_ts_client/classes.appstoreresolver.d.ts +39 -0
- package/dist_ts_client/classes.appstoreresolver.js +513 -0
- package/dist_ts_client/index.d.ts +2 -0
- package/dist_ts_client/index.js +3 -0
- package/dist_ts_client/types.d.ts +27 -0
- package/dist_ts_client/types.js +2 -0
- package/license +21 -0
- package/package.json +52 -0
- package/readme.md +180 -0
- package/ts_client/classes.appstoreresolver.ts +623 -0
- package/ts_client/index.ts +2 -0
- package/ts_client/tspublish.json +3 -0
- package/ts_client/types.ts +31 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"image": "wordpress:latest",
|
|
3
|
+
"port": 80,
|
|
4
|
+
"envVars": [
|
|
5
|
+
{ "key": "WORDPRESS_DB_HOST", "value": "${MARIADB_HOST}:${MARIADB_PORT}", "description": "Database host (auto-injected by platform)" },
|
|
6
|
+
{ "key": "WORDPRESS_DB_USER", "value": "${MARIADB_USER}", "description": "Database user (auto-injected by platform)" },
|
|
7
|
+
{ "key": "WORDPRESS_DB_PASSWORD", "value": "${MARIADB_PASSWORD}", "description": "Database password (auto-injected by platform)" },
|
|
8
|
+
{ "key": "WORDPRESS_DB_NAME", "value": "${MARIADB_DATABASE}", "description": "Database name (auto-injected by platform)" }
|
|
9
|
+
],
|
|
10
|
+
"platformRequirements": {
|
|
11
|
+
"mariadb": true
|
|
12
|
+
}
|
|
13
|
+
}
|
package/appstore.json
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"updatedAt": "2026-05-18T00:00:00Z",
|
|
4
|
+
"apps": [
|
|
5
|
+
{
|
|
6
|
+
"id": "nginx",
|
|
7
|
+
"name": "Nginx",
|
|
8
|
+
"description": "High-performance web server and reverse proxy. Lightweight, fast, and battle-tested.",
|
|
9
|
+
"category": "Web Server",
|
|
10
|
+
"iconName": "globe",
|
|
11
|
+
"latestVersion": "1.0.0",
|
|
12
|
+
"tags": ["web", "proxy"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "wordpress",
|
|
16
|
+
"name": "WordPress",
|
|
17
|
+
"description": "The world's most popular content management system. Powers over 40% of the web.",
|
|
18
|
+
"category": "CMS",
|
|
19
|
+
"iconName": "file-text",
|
|
20
|
+
"latestVersion": "1.0.0",
|
|
21
|
+
"tags": ["cms", "blog"]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "ghost",
|
|
25
|
+
"name": "Ghost",
|
|
26
|
+
"description": "Modern publishing platform for creating professional blogs and newsletters.",
|
|
27
|
+
"category": "CMS",
|
|
28
|
+
"iconName": "book-open",
|
|
29
|
+
"latestVersion": "1.0.0",
|
|
30
|
+
"tags": ["cms", "blog", "newsletter"]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "gitea",
|
|
34
|
+
"name": "Gitea",
|
|
35
|
+
"description": "Lightweight self-hosted Git service. Easy to install and maintain.",
|
|
36
|
+
"category": "Dev Tools",
|
|
37
|
+
"iconName": "git-branch",
|
|
38
|
+
"latestVersion": "1.0.0",
|
|
39
|
+
"tags": ["git", "devtools"]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "gitops",
|
|
43
|
+
"name": "GitOps",
|
|
44
|
+
"description": "Operations dashboard for Git hosting, CI/CD secrets, pipeline logs, and documentation sync.",
|
|
45
|
+
"category": "Dev Tools",
|
|
46
|
+
"iconName": "git-branch",
|
|
47
|
+
"latestVersion": "1.0.0",
|
|
48
|
+
"tags": ["git", "devtools", "ci", "secrets"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "nextcloud",
|
|
52
|
+
"name": "Nextcloud",
|
|
53
|
+
"description": "Self-hosted file sync and share platform. Your own private cloud.",
|
|
54
|
+
"category": "Storage",
|
|
55
|
+
"iconName": "package",
|
|
56
|
+
"latestVersion": "1.0.0",
|
|
57
|
+
"tags": ["storage", "cloud"]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "grafana",
|
|
61
|
+
"name": "Grafana",
|
|
62
|
+
"description": "Open-source observability platform for metrics, logs, and traces visualization.",
|
|
63
|
+
"category": "Monitoring",
|
|
64
|
+
"iconName": "monitor",
|
|
65
|
+
"latestVersion": "1.0.0",
|
|
66
|
+
"tags": ["monitoring", "observability"]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "uptime-kuma",
|
|
70
|
+
"name": "Uptime Kuma",
|
|
71
|
+
"description": "Self-hosted monitoring tool. Beautiful UI for tracking uptime of services.",
|
|
72
|
+
"category": "Monitoring",
|
|
73
|
+
"iconName": "monitor",
|
|
74
|
+
"latestVersion": "1.0.0",
|
|
75
|
+
"tags": ["monitoring", "uptime"]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "plausible",
|
|
79
|
+
"name": "Plausible Analytics",
|
|
80
|
+
"description": "Privacy-friendly web analytics. No cookies, GDPR compliant by design.",
|
|
81
|
+
"category": "Analytics",
|
|
82
|
+
"iconName": "monitor",
|
|
83
|
+
"latestVersion": "1.0.0",
|
|
84
|
+
"tags": ["analytics"]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "vaultwarden",
|
|
88
|
+
"name": "Vaultwarden",
|
|
89
|
+
"description": "Lightweight Bitwarden-compatible password manager server.",
|
|
90
|
+
"category": "Security",
|
|
91
|
+
"iconName": "shield",
|
|
92
|
+
"latestVersion": "1.0.0",
|
|
93
|
+
"tags": ["security", "passwords"]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "n8n",
|
|
97
|
+
"name": "N8N",
|
|
98
|
+
"description": "Workflow automation tool. Connect anything to everything with a visual editor.",
|
|
99
|
+
"category": "Automation",
|
|
100
|
+
"iconName": "server",
|
|
101
|
+
"latestVersion": "1.0.0",
|
|
102
|
+
"tags": ["automation", "workflow"]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "mattermost",
|
|
106
|
+
"name": "Mattermost",
|
|
107
|
+
"description": "Open-source Slack alternative for team communication and collaboration.",
|
|
108
|
+
"category": "Communication",
|
|
109
|
+
"iconName": "mail",
|
|
110
|
+
"latestVersion": "1.0.0",
|
|
111
|
+
"tags": ["communication", "chat"]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "siprouter",
|
|
115
|
+
"name": "SIP Router",
|
|
116
|
+
"description": "SIP B2BUA, WebRTC softphone bridge, voicemail, fax, and live telephony operations dashboard.",
|
|
117
|
+
"category": "Communication",
|
|
118
|
+
"iconName": "phone",
|
|
119
|
+
"latestVersion": "1.0.0",
|
|
120
|
+
"tags": ["sip", "telephony", "webrtc", "voice", "pbx"]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "portainer",
|
|
124
|
+
"name": "Portainer",
|
|
125
|
+
"description": "Docker management UI. Monitor and manage containers from a web interface.",
|
|
126
|
+
"category": "Dev Tools",
|
|
127
|
+
"iconName": "package",
|
|
128
|
+
"latestVersion": "1.0.0",
|
|
129
|
+
"tags": ["docker", "devtools"]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "rustdesk-server",
|
|
133
|
+
"name": "RustDesk Server",
|
|
134
|
+
"description": "Self-hosted RustDesk ID and relay server for secure remote desktop access.",
|
|
135
|
+
"category": "Remote Access",
|
|
136
|
+
"iconName": "monitor",
|
|
137
|
+
"latestVersion": "1.0.0",
|
|
138
|
+
"tags": ["remote-desktop", "relay", "self-hosted"]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "cloudly",
|
|
142
|
+
"name": "Cloudly",
|
|
143
|
+
"description": "Multi-node serve.zone control plane for clusters, workload services, domains, and deployments.",
|
|
144
|
+
"category": "Dev Tools",
|
|
145
|
+
"iconName": "server",
|
|
146
|
+
"latestVersion": "1.0.0",
|
|
147
|
+
"tags": ["serve.zone", "control-plane", "clusters", "deployments"],
|
|
148
|
+
"source": {
|
|
149
|
+
"type": "repoManifest",
|
|
150
|
+
"url": "https://code.foss.global/serve.zone/cloudly/raw/branch/main/servezone.appstore.json",
|
|
151
|
+
"ref": "main"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "redis",
|
|
156
|
+
"name": "Redis",
|
|
157
|
+
"description": "In-memory data store used as database, cache, and message broker.",
|
|
158
|
+
"category": "Database",
|
|
159
|
+
"iconName": "database",
|
|
160
|
+
"latestVersion": "1.0.0",
|
|
161
|
+
"tags": ["database", "cache"]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "postgres",
|
|
165
|
+
"name": "PostgreSQL",
|
|
166
|
+
"description": "Advanced open-source relational database. Reliable and feature-rich.",
|
|
167
|
+
"category": "Database",
|
|
168
|
+
"iconName": "database",
|
|
169
|
+
"latestVersion": "1.0.0",
|
|
170
|
+
"tags": ["database", "sql"]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "mariadb",
|
|
174
|
+
"name": "MariaDB",
|
|
175
|
+
"description": "Community-developed fork of MySQL. Drop-in replacement with enhanced features.",
|
|
176
|
+
"category": "Database",
|
|
177
|
+
"iconName": "database",
|
|
178
|
+
"latestVersion": "1.0.0",
|
|
179
|
+
"tags": ["database", "sql", "mysql"]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "adminer",
|
|
183
|
+
"name": "Adminer",
|
|
184
|
+
"description": "Database management tool in a single PHP file. Supports MySQL, PostgreSQL, SQLite.",
|
|
185
|
+
"category": "Dev Tools",
|
|
186
|
+
"iconName": "database",
|
|
187
|
+
"latestVersion": "1.0.0",
|
|
188
|
+
"tags": ["database", "devtools"]
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
package/changelog.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Pending
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 2026-05-25 - 0.2.0
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- publish appstore resolver client
|
|
11
|
+
- Adds the `@serve.zone/appstore` package with a TypeScript resolver client
|
|
12
|
+
- Renames the top-level index to `appstore.json`
|
|
13
|
+
- Supports linked `servezone.appstore.json` manifests and Docker digest-tracked app upgrades
|
|
14
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type * as interfaces from '@serve.zone/interfaces';
|
|
2
|
+
import type { IAppStoreResolverOptions, IParsedDockerImageReference, IResolvedAppStoreApp, TAppStoreApp, TAppStoreDockerImageSource, TAppStoreIndex, TAppStoreRepoManifestSource, TAppStoreResolvedSource, TAppStoreVersionConfig, TServezoneAppStoreManifest } from './types.js';
|
|
3
|
+
export declare class AppStoreResolver {
|
|
4
|
+
readonly baseUrl: string;
|
|
5
|
+
private readonly fetchRef;
|
|
6
|
+
private readonly resolveDockerDigests;
|
|
7
|
+
private readonly now;
|
|
8
|
+
private appStoreCache;
|
|
9
|
+
private sourceAppCache;
|
|
10
|
+
constructor(optionsArg?: IAppStoreResolverOptions);
|
|
11
|
+
getAppStoreIndex(): Promise<TAppStoreIndex>;
|
|
12
|
+
getApps(): Promise<TAppStoreApp[]>;
|
|
13
|
+
getAppMeta(appIdArg: string): Promise<interfaces.appstore.IAppStoreAppMeta>;
|
|
14
|
+
getAppVersionConfig(appIdArg: string, versionArg: string): Promise<TAppStoreVersionConfig>;
|
|
15
|
+
resolveAppStore(appStoreArg: unknown): Promise<TAppStoreIndex>;
|
|
16
|
+
resolveRepoManifestSource(sourceArg: TAppStoreRepoManifestSource, appArg?: TAppStoreApp): Promise<IResolvedAppStoreApp>;
|
|
17
|
+
resolveDockerImageSource(sourceArg: TAppStoreDockerImageSource): Promise<TAppStoreResolvedSource>;
|
|
18
|
+
resolveDockerImageDigest(imageArg: string): Promise<string | null>;
|
|
19
|
+
validateAppStoreVersionConfig(configArg: TAppStoreVersionConfig, labelArg?: string): void;
|
|
20
|
+
normalizeVolumes(volumesArg?: TAppStoreVersionConfig['volumes']): interfaces.appstore.IAppStoreVolume[];
|
|
21
|
+
private fetchAppStoreIndex;
|
|
22
|
+
private resolveAppStoreApp;
|
|
23
|
+
private resolveServezoneAppStoreManifest;
|
|
24
|
+
private resolveConfigSource;
|
|
25
|
+
private applyDockerImageSourceToConfig;
|
|
26
|
+
private createAppMetaFromAppStoreApp;
|
|
27
|
+
private getAppStoreApp;
|
|
28
|
+
private fetchJson;
|
|
29
|
+
private fetchTextFromUrl;
|
|
30
|
+
private fetchDockerManifestDigest;
|
|
31
|
+
private fetchDockerRegistryToken;
|
|
32
|
+
private validateVolume;
|
|
33
|
+
private validatePublishedPorts;
|
|
34
|
+
private assertValidPort;
|
|
35
|
+
}
|
|
36
|
+
export declare function parseAppStoreIndex(inputArg: unknown): TAppStoreIndex;
|
|
37
|
+
export declare function parseServezoneAppStoreManifest(inputArg: unknown): TServezoneAppStoreManifest;
|
|
38
|
+
export declare function parseDockerImageReference(imageArg: string): IParsedDockerImageReference;
|
|
39
|
+
export declare function createAppStoreVersionForDockerSource(sourceArg: TAppStoreDockerImageSource, fallbackVersionArg: string, digestArg?: string): string;
|