@rwdocs/backstage-plugin-rw-backend 0.1.3 → 0.1.4
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/config.d.ts +11 -0
- package/dist/hub.cjs.js +13 -0
- package/dist/hub.cjs.js.map +1 -1
- package/dist/plugin.cjs.js +20 -7
- package/dist/plugin.cjs.js.map +1 -1
- package/package.json +4 -2
package/config.d.ts
CHANGED
|
@@ -13,6 +13,17 @@ export interface Config {
|
|
|
13
13
|
entity?: string;
|
|
14
14
|
/** Maximum number of cached RwSite instances. Default: 20. */
|
|
15
15
|
cacheSize?: number;
|
|
16
|
+
/**
|
|
17
|
+
* How often to check cached sites for upstream changes and reload if needed.
|
|
18
|
+
* If not set, no periodic reloading is performed.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```yaml
|
|
22
|
+
* rw:
|
|
23
|
+
* reloadInterval: { minutes: 5 }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
reloadInterval?: import("@backstage/types").HumanDuration;
|
|
16
27
|
/**
|
|
17
28
|
* S3 storage configuration. Shared across all entity sites.
|
|
18
29
|
* Mutually exclusive with `projectDir`.
|
package/dist/hub.cjs.js
CHANGED
|
@@ -33,6 +33,19 @@ class Hub {
|
|
|
33
33
|
this.cache.set(entityRef, site);
|
|
34
34
|
return site;
|
|
35
35
|
}
|
|
36
|
+
async reloadAll(logger) {
|
|
37
|
+
const entries = [...this.cache.entries()];
|
|
38
|
+
for (const [ref, site] of entries) {
|
|
39
|
+
try {
|
|
40
|
+
const reloaded = await site.reload();
|
|
41
|
+
if (reloaded) {
|
|
42
|
+
logger.info(`Reloaded site: ${ref}`);
|
|
43
|
+
}
|
|
44
|
+
} catch (err) {
|
|
45
|
+
logger.warn(`Failed to reload site ${ref}: ${err}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
36
49
|
getS3Site(entityRef) {
|
|
37
50
|
const cached = this.cache.get(entityRef);
|
|
38
51
|
if (cached) {
|
package/dist/hub.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub.cjs.js","sources":["../src/hub.ts"],"sourcesContent":["import { createSite, type RwSite, type SiteConfig, type DiagramsConfig } from \"@rwdocs/core\";\nimport { toEntityPath } from \"./entityPath\";\n\nexport interface S3SharedConfig {\n bucket: string;\n region?: string;\n endpoint?: string;\n bucketRootPath?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n}\n\nexport interface HubOptions {\n s3?: S3SharedConfig;\n projectDir?: string;\n /** Entity ref in any format accepted by parseEntityRef. Normalized internally. */\n entity?: string;\n diagrams?: DiagramsConfig;\n cacheSize?: number;\n}\n\nexport class Hub {\n private readonly options: HubOptions;\n private readonly cache: Map<string, RwSite> = new Map();\n private readonly maxSize: number;\n\n constructor(options: HubOptions) {\n this.options = {\n ...options,\n entity: options.entity ? toEntityPath(options.entity) : undefined,\n };\n this.maxSize = options.cacheSize ?? 20;\n }\n\n getSite(entityRef: string): RwSite | undefined {\n if (this.options.projectDir) {\n return this.getLocalSite(entityRef);\n }\n return this.getS3Site(entityRef);\n }\n\n private getLocalSite(entityRef: string): RwSite | undefined {\n if (entityRef !== this.options.entity) {\n return undefined;\n }\n\n const cached = this.cache.get(entityRef);\n if (cached) return cached;\n\n const site = createSite({\n projectDir: this.options.projectDir,\n diagrams: this.options.diagrams,\n });\n this.cache.set(entityRef, site);\n return site;\n }\n\n private getS3Site(entityRef: string): RwSite {\n const cached = this.cache.get(entityRef);\n if (cached) {\n this.cache.delete(entityRef);\n this.cache.set(entityRef, cached);\n return cached;\n }\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value!;\n this.cache.delete(firstKey);\n }\n\n const s3 = this.options.s3!;\n const config: SiteConfig = {\n s3: { ...s3, entity: entityRef },\n diagrams: this.options.diagrams,\n };\n\n const site = createSite(config);\n this.cache.set(entityRef, site);\n return site;\n }\n}\n"],"names":["toEntityPath","createSite"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"hub.cjs.js","sources":["../src/hub.ts"],"sourcesContent":["import type { LoggerService } from \"@backstage/backend-plugin-api\";\nimport { createSite, type RwSite, type SiteConfig, type DiagramsConfig } from \"@rwdocs/core\";\nimport { toEntityPath } from \"./entityPath\";\n\nexport interface S3SharedConfig {\n bucket: string;\n region?: string;\n endpoint?: string;\n bucketRootPath?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n}\n\nexport interface HubOptions {\n s3?: S3SharedConfig;\n projectDir?: string;\n /** Entity ref in any format accepted by parseEntityRef. Normalized internally. */\n entity?: string;\n diagrams?: DiagramsConfig;\n cacheSize?: number;\n}\n\nexport class Hub {\n private readonly options: HubOptions;\n private readonly cache: Map<string, RwSite> = new Map();\n private readonly maxSize: number;\n\n constructor(options: HubOptions) {\n this.options = {\n ...options,\n entity: options.entity ? toEntityPath(options.entity) : undefined,\n };\n this.maxSize = options.cacheSize ?? 20;\n }\n\n getSite(entityRef: string): RwSite | undefined {\n if (this.options.projectDir) {\n return this.getLocalSite(entityRef);\n }\n return this.getS3Site(entityRef);\n }\n\n private getLocalSite(entityRef: string): RwSite | undefined {\n if (entityRef !== this.options.entity) {\n return undefined;\n }\n\n const cached = this.cache.get(entityRef);\n if (cached) return cached;\n\n const site = createSite({\n projectDir: this.options.projectDir,\n diagrams: this.options.diagrams,\n });\n this.cache.set(entityRef, site);\n return site;\n }\n\n async reloadAll(logger: LoggerService) {\n const entries = [...this.cache.entries()];\n for (const [ref, site] of entries) {\n try {\n const reloaded = await site.reload();\n if (reloaded) {\n logger.info(`Reloaded site: ${ref}`);\n }\n } catch (err) {\n logger.warn(`Failed to reload site ${ref}: ${err}`);\n }\n }\n }\n\n private getS3Site(entityRef: string): RwSite {\n const cached = this.cache.get(entityRef);\n if (cached) {\n this.cache.delete(entityRef);\n this.cache.set(entityRef, cached);\n return cached;\n }\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value!;\n this.cache.delete(firstKey);\n }\n\n const s3 = this.options.s3!;\n const config: SiteConfig = {\n s3: { ...s3, entity: entityRef },\n diagrams: this.options.diagrams,\n };\n\n const site = createSite(config);\n this.cache.set(entityRef, site);\n return site;\n }\n}\n"],"names":["toEntityPath","createSite"],"mappings":"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"}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
4
|
+
var config = require('@backstage/config');
|
|
4
5
|
var router = require('./router.cjs.js');
|
|
5
6
|
var hub = require('./hub.cjs.js');
|
|
6
7
|
var entityPath = require('./entityPath.cjs.js');
|
|
@@ -13,13 +14,14 @@ const rwPlugin = backendPluginApi.createBackendPlugin({
|
|
|
13
14
|
httpRouter: backendPluginApi.coreServices.httpRouter,
|
|
14
15
|
httpAuth: backendPluginApi.coreServices.httpAuth,
|
|
15
16
|
logger: backendPluginApi.coreServices.logger,
|
|
16
|
-
config: backendPluginApi.coreServices.rootConfig
|
|
17
|
+
config: backendPluginApi.coreServices.rootConfig,
|
|
18
|
+
scheduler: backendPluginApi.coreServices.scheduler
|
|
17
19
|
},
|
|
18
|
-
async init({ httpRouter, httpAuth, logger, config }) {
|
|
19
|
-
const projectDir = config.getOptionalString("rw.projectDir");
|
|
20
|
-
const entity = config.getOptionalString("rw.entity");
|
|
21
|
-
const cacheSize = config.getOptionalNumber("rw.cacheSize");
|
|
22
|
-
const s3Config = config.getOptionalConfig("rw.s3");
|
|
20
|
+
async init({ httpRouter, httpAuth, logger, config: config$1, scheduler }) {
|
|
21
|
+
const projectDir = config$1.getOptionalString("rw.projectDir");
|
|
22
|
+
const entity = config$1.getOptionalString("rw.entity");
|
|
23
|
+
const cacheSize = config$1.getOptionalNumber("rw.cacheSize");
|
|
24
|
+
const s3Config = config$1.getOptionalConfig("rw.s3");
|
|
23
25
|
const s3 = s3Config ? {
|
|
24
26
|
bucket: s3Config.getString("bucket"),
|
|
25
27
|
region: s3Config.getOptionalString("region"),
|
|
@@ -34,7 +36,7 @@ const rwPlugin = backendPluginApi.createBackendPlugin({
|
|
|
34
36
|
if (projectDir && !entity) {
|
|
35
37
|
throw new Error("rw.entity is required when rw.projectDir is set");
|
|
36
38
|
}
|
|
37
|
-
const diagramsConfig = config.getOptionalConfig("rw.diagrams");
|
|
39
|
+
const diagramsConfig = config$1.getOptionalConfig("rw.diagrams");
|
|
38
40
|
const diagrams = diagramsConfig ? {
|
|
39
41
|
krokiUrl: diagramsConfig.getOptionalString("krokiUrl"),
|
|
40
42
|
dpi: diagramsConfig.getOptionalNumber("dpi")
|
|
@@ -54,6 +56,17 @@ const rwPlugin = backendPluginApi.createBackendPlugin({
|
|
|
54
56
|
`Hub: local mode (${projectDir}, entity: ${entity ? entityPath.toEntityPath(entity) : entity})`
|
|
55
57
|
);
|
|
56
58
|
}
|
|
59
|
+
if (config$1.has("rw.reloadInterval")) {
|
|
60
|
+
const frequency = config.readDurationFromConfig(config$1, { key: "rw.reloadInterval" });
|
|
61
|
+
logger.info(`Scheduling site reload with interval: ${JSON.stringify(frequency)}`);
|
|
62
|
+
await scheduler.scheduleTask({
|
|
63
|
+
id: "rw-site-reload",
|
|
64
|
+
frequency,
|
|
65
|
+
timeout: frequency,
|
|
66
|
+
scope: "local",
|
|
67
|
+
fn: async () => hub$1.reloadAll(logger)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
57
70
|
const router$1 = await router.createRouter({ hub: hub$1 });
|
|
58
71
|
httpRouter.use(router$1);
|
|
59
72
|
httpRouter.addAuthPolicy({
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["import { coreServices, createBackendPlugin } from \"@backstage/backend-plugin-api\";\nimport { createRouter } from \"./router\";\nimport { Hub, type HubOptions } from \"./hub\";\nimport { toEntityPath } from \"./entityPath\";\n\nexport const rwPlugin = createBackendPlugin({\n pluginId: \"rw\",\n register(env) {\n env.registerInit({\n deps: {\n httpRouter: coreServices.httpRouter,\n httpAuth: coreServices.httpAuth,\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n },\n async init({ httpRouter, httpAuth, logger, config }) {\n const projectDir = config.getOptionalString(\"rw.projectDir\");\n const entity = config.getOptionalString(\"rw.entity\");\n const cacheSize = config.getOptionalNumber(\"rw.cacheSize\");\n\n const s3Config = config.getOptionalConfig(\"rw.s3\");\n const s3 = s3Config\n ? {\n bucket: s3Config.getString(\"bucket\"),\n region: s3Config.getOptionalString(\"region\"),\n endpoint: s3Config.getOptionalString(\"endpoint\"),\n bucketRootPath: s3Config.getOptionalString(\"bucketRootPath\"),\n accessKeyId: s3Config.getOptionalString(\"accessKeyId\"),\n secretAccessKey: s3Config.getOptionalString(\"secretAccessKey\"),\n }\n : undefined;\n\n if (!projectDir && !s3) {\n throw new Error(\"Either rw.projectDir or rw.s3 must be configured\");\n }\n\n if (projectDir && !entity) {\n throw new Error(\"rw.entity is required when rw.projectDir is set\");\n }\n\n const diagramsConfig = config.getOptionalConfig(\"rw.diagrams\");\n const diagrams = diagramsConfig\n ? {\n krokiUrl: diagramsConfig.getOptionalString(\"krokiUrl\"),\n dpi: diagramsConfig.getOptionalNumber(\"dpi\"),\n }\n : undefined;\n\n const hubOptions: HubOptions = {\n projectDir,\n entity,\n s3,\n diagrams,\n cacheSize,\n };\n\n const hub = new Hub(hubOptions);\n\n if (s3) {\n logger.info(`Hub: S3 mode (bucket: ${s3.bucket}, cache size: ${cacheSize ?? 20})`);\n } else {\n logger.info(\n `Hub: local mode (${projectDir}, entity: ${entity ? toEntityPath(entity) : entity})`,\n );\n }\n\n const router = await createRouter({ logger, httpAuth, hub });\n httpRouter.use(router);\n httpRouter.addAuthPolicy({\n path: \"/health\",\n allow: \"unauthenticated\",\n });\n },\n });\n },\n});\n"],"names":["createBackendPlugin","coreServices","hub","Hub","toEntityPath","router","createRouter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["import { coreServices, createBackendPlugin } from \"@backstage/backend-plugin-api\";\nimport { readDurationFromConfig } from \"@backstage/config\";\nimport { createRouter } from \"./router\";\nimport { Hub, type HubOptions } from \"./hub\";\nimport { toEntityPath } from \"./entityPath\";\n\nexport const rwPlugin = createBackendPlugin({\n pluginId: \"rw\",\n register(env) {\n env.registerInit({\n deps: {\n httpRouter: coreServices.httpRouter,\n httpAuth: coreServices.httpAuth,\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n scheduler: coreServices.scheduler,\n },\n async init({ httpRouter, httpAuth, logger, config, scheduler }) {\n const projectDir = config.getOptionalString(\"rw.projectDir\");\n const entity = config.getOptionalString(\"rw.entity\");\n const cacheSize = config.getOptionalNumber(\"rw.cacheSize\");\n\n const s3Config = config.getOptionalConfig(\"rw.s3\");\n const s3 = s3Config\n ? {\n bucket: s3Config.getString(\"bucket\"),\n region: s3Config.getOptionalString(\"region\"),\n endpoint: s3Config.getOptionalString(\"endpoint\"),\n bucketRootPath: s3Config.getOptionalString(\"bucketRootPath\"),\n accessKeyId: s3Config.getOptionalString(\"accessKeyId\"),\n secretAccessKey: s3Config.getOptionalString(\"secretAccessKey\"),\n }\n : undefined;\n\n if (!projectDir && !s3) {\n throw new Error(\"Either rw.projectDir or rw.s3 must be configured\");\n }\n\n if (projectDir && !entity) {\n throw new Error(\"rw.entity is required when rw.projectDir is set\");\n }\n\n const diagramsConfig = config.getOptionalConfig(\"rw.diagrams\");\n const diagrams = diagramsConfig\n ? {\n krokiUrl: diagramsConfig.getOptionalString(\"krokiUrl\"),\n dpi: diagramsConfig.getOptionalNumber(\"dpi\"),\n }\n : undefined;\n\n const hubOptions: HubOptions = {\n projectDir,\n entity,\n s3,\n diagrams,\n cacheSize,\n };\n\n const hub = new Hub(hubOptions);\n\n if (s3) {\n logger.info(`Hub: S3 mode (bucket: ${s3.bucket}, cache size: ${cacheSize ?? 20})`);\n } else {\n logger.info(\n `Hub: local mode (${projectDir}, entity: ${entity ? toEntityPath(entity) : entity})`,\n );\n }\n\n if (config.has(\"rw.reloadInterval\")) {\n const frequency = readDurationFromConfig(config, { key: \"rw.reloadInterval\" });\n logger.info(`Scheduling site reload with interval: ${JSON.stringify(frequency)}`);\n\n await scheduler.scheduleTask({\n id: \"rw-site-reload\",\n frequency,\n timeout: frequency,\n scope: \"local\",\n fn: async () => hub.reloadAll(logger),\n });\n }\n\n const router = await createRouter({ logger, httpAuth, hub });\n httpRouter.use(router);\n httpRouter.addAuthPolicy({\n path: \"/health\",\n allow: \"unauthenticated\",\n });\n },\n });\n },\n});\n"],"names":["createBackendPlugin","coreServices","config","hub","Hub","toEntityPath","readDurationFromConfig","router","createRouter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rwdocs/backstage-plugin-rw-backend",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"license": "MIT OR Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -54,8 +54,10 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@backstage/catalog-model": "^1.7.6",
|
|
57
|
+
"@backstage/config": "^1.3.6",
|
|
57
58
|
"@backstage/errors": "^1.2.7",
|
|
58
|
-
"@
|
|
59
|
+
"@backstage/types": "^1.2.2",
|
|
60
|
+
"@rwdocs/core": "^0.1.21",
|
|
59
61
|
"express": "^4.21.0",
|
|
60
62
|
"express-promise-router": "^4.1.0"
|
|
61
63
|
},
|