@checkstack/backend 0.4.16 → 0.5.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/CHANGELOG.md +20 -0
- package/package.json +6 -6
- package/src/index.ts +48 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @checkstack/backend
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3589199: Add About page with platform information, license, contact details, and version information
|
|
8
|
+
|
|
9
|
+
- New `about-common` package with plugin metadata
|
|
10
|
+
- New `about-frontend` package with the About page and user menu item
|
|
11
|
+
- New `/api/about` backend endpoint exposing core version and loaded plugin versions
|
|
12
|
+
- Accessible via "About Checkstack" in the user menu dropdown
|
|
13
|
+
|
|
14
|
+
## 0.4.17
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [23c80bc]
|
|
19
|
+
- @checkstack/backend-api@0.10.0
|
|
20
|
+
- @checkstack/queue-api@0.2.9
|
|
21
|
+
- @checkstack/signal-backend@0.1.15
|
|
22
|
+
|
|
3
23
|
## 0.4.16
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkstack/backend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"checkstack": {
|
|
5
5
|
"type": "backend"
|
|
6
6
|
},
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@checkstack/api-docs-common": "0.1.8",
|
|
17
|
-
"@checkstack/auth-common": "0.
|
|
18
|
-
"@checkstack/backend-api": "0.
|
|
17
|
+
"@checkstack/auth-common": "0.6.0",
|
|
18
|
+
"@checkstack/backend-api": "0.10.0",
|
|
19
19
|
"@checkstack/common": "0.6.4",
|
|
20
20
|
"@checkstack/drizzle-helper": "0.0.4",
|
|
21
|
-
"@checkstack/queue-api": "0.2.
|
|
22
|
-
"@checkstack/signal-backend": "0.1.
|
|
21
|
+
"@checkstack/queue-api": "0.2.9",
|
|
22
|
+
"@checkstack/signal-backend": "0.1.15",
|
|
23
23
|
"@checkstack/signal-common": "0.1.8",
|
|
24
24
|
"@hono/zod-validator": "^0.7.6",
|
|
25
25
|
"@orpc/client": "^1.13.14",
|
|
@@ -40,6 +40,6 @@
|
|
|
40
40
|
"@types/bun": "latest",
|
|
41
41
|
"@checkstack/tsconfig": "0.0.4",
|
|
42
42
|
"@checkstack/scripts": "0.1.2",
|
|
43
|
-
"@checkstack/test-utils-backend": "0.1.
|
|
43
|
+
"@checkstack/test-utils-backend": "0.1.15"
|
|
44
44
|
}
|
|
45
45
|
}
|
package/src/index.ts
CHANGED
|
@@ -95,6 +95,54 @@ app.get("/api/plugins", async (c) => {
|
|
|
95
95
|
return c.json(enabledPlugins);
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
+
// About endpoint - returns core version and loaded plugin versions
|
|
99
|
+
app.get("/api/about", async (c) => {
|
|
100
|
+
// Read core backend version from package.json
|
|
101
|
+
let coreVersion = "unknown";
|
|
102
|
+
try {
|
|
103
|
+
const corePkgPath = path.join(import.meta.dir, "..", "package.json");
|
|
104
|
+
if (fs.existsSync(corePkgPath)) {
|
|
105
|
+
const corePkg = JSON.parse(fs.readFileSync(corePkgPath, "utf8"));
|
|
106
|
+
coreVersion = corePkg.version ?? "unknown";
|
|
107
|
+
}
|
|
108
|
+
} catch {
|
|
109
|
+
rootLogger.debug("Failed to read core backend package.json for version");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Read all enabled plugins with their versions from their package.json files
|
|
113
|
+
const enabledPlugins = await db
|
|
114
|
+
.select({
|
|
115
|
+
name: plugins.name,
|
|
116
|
+
path: plugins.path,
|
|
117
|
+
type: plugins.type,
|
|
118
|
+
})
|
|
119
|
+
.from(plugins)
|
|
120
|
+
.where(eq(plugins.enabled, true));
|
|
121
|
+
|
|
122
|
+
const pluginInfos = enabledPlugins.map((plugin) => {
|
|
123
|
+
let version = "unknown";
|
|
124
|
+
try {
|
|
125
|
+
const pkgJsonPath = path.join(plugin.path, "package.json");
|
|
126
|
+
if (fs.existsSync(pkgJsonPath)) {
|
|
127
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
|
|
128
|
+
version = pkgJson.version ?? "unknown";
|
|
129
|
+
}
|
|
130
|
+
} catch {
|
|
131
|
+
// Plugin path may not have a readable package.json (e.g., remote plugins)
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
name: plugin.name,
|
|
135
|
+
version,
|
|
136
|
+
type: plugin.type,
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
return c.json({
|
|
141
|
+
coreVersion,
|
|
142
|
+
plugins: pluginInfos,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
|
|
98
146
|
app.get("/.well-known/jwks.json", async (c) => {
|
|
99
147
|
const { keyStore } = await import("./services/keystore");
|
|
100
148
|
const jwks = await keyStore.getPublicJWKS();
|