@veecode-platform/backstage-plugin-kong-service-manager-backend-dynamic 1.0.1 → 1.0.2
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/README.md +21 -1
- package/dist/index.d.ts +6 -0
- package/dist/router.cjs.js +4 -0
- package/dist/router.cjs.js.map +1 -1
- package/dist/services/KongServiceManagerService.cjs.js +11 -1
- package/dist/services/KongServiceManagerService.cjs.js.map +1 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/index.cjs.js +1 -0
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/index.cjs.js.map +1 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/index.d.ts +3 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/index.esm.js +1 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/permissions.cjs.js +7 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/permissions.cjs.js.map +1 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/permissions.esm.js +7 -2
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/permissions.esm.js.map +1 -1
- package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/package.json +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -157,13 +157,33 @@ You can leave them both empty if your Kong Admin API does not require authentica
|
|
|
157
157
|
**Note:** it is custom practice to create Kong service and routes for the Admin API itself,
|
|
158
158
|
so that you can control access to it via "homemade" RBAC using the bundled OSS plugins. This strategy can be refined to the point of partially exposing the Admin API, but we will not cover this in this documentation.
|
|
159
159
|
|
|
160
|
+
## Dynamic Plugin Wiring
|
|
161
|
+
|
|
162
|
+
**Note:** dynamic plugin loading is a feature supported by VeeCode DevPortal and by RHDH (Red Hat Developer Hub).
|
|
163
|
+
|
|
164
|
+
This plugin can be dynamically downloaded and installed from the public npm registry, as well as its UI elements can be configured without any source code changes:
|
|
165
|
+
|
|
166
|
+
```yaml
|
|
167
|
+
plugins:
|
|
168
|
+
- package: @veecode-platform/backstage-plugin-kong-service-manager-backend-dynamic
|
|
169
|
+
disabled: false
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**VeeCode DevPortal** already bundles the dynamic plugin as a pre-installed plugin with default configs, so it can be alternatively be loaded just using a local path:
|
|
173
|
+
|
|
174
|
+
```yaml
|
|
175
|
+
plugins:
|
|
176
|
+
- package: ./dynamic-plugins/dist/backstage-plugin-kong-service-manager-backend-dynamic
|
|
177
|
+
disabled: false
|
|
178
|
+
```
|
|
179
|
+
|
|
160
180
|
## Development
|
|
161
181
|
|
|
162
182
|
Start the plugin in standalone mode for local development:
|
|
163
183
|
|
|
164
184
|
```bash
|
|
165
185
|
cd workspace/kong-tools
|
|
166
|
-
yarn
|
|
186
|
+
yarn --cwd plugins/kong-service-manager-backend start
|
|
167
187
|
```
|
|
168
188
|
|
|
169
189
|
The standalone server reads configuration from `app-config.yaml` and starts
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ declare class KongServiceManagerService {
|
|
|
22
22
|
private buildUrl;
|
|
23
23
|
private buildHeaders;
|
|
24
24
|
private kongFetch;
|
|
25
|
+
getInstances(): Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
apiBaseUrl: string;
|
|
28
|
+
workspace?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}>;
|
|
25
31
|
getServiceInfo(instanceName: string, serviceName: string): Promise<ServiceInfoResponse>;
|
|
26
32
|
getRoutes(instanceName: string, serviceName: string): Promise<RoutesResponse>;
|
|
27
33
|
getRouteById(instanceName: string, serviceName: string, routeId: string): Promise<RouteResponse>;
|
package/dist/router.cjs.js
CHANGED
|
@@ -85,6 +85,10 @@ async function createRouter({
|
|
|
85
85
|
router.get("/health", async (_req, res) => {
|
|
86
86
|
res.json({ status: "ok" });
|
|
87
87
|
});
|
|
88
|
+
router.get("/instances", async (req, res) => {
|
|
89
|
+
await authorize(req, backstagePluginKongServiceManagerCommon.kongInstancesReadPermission);
|
|
90
|
+
res.json(kongService.getInstances());
|
|
91
|
+
});
|
|
88
92
|
router.get("/:instance/services/:serviceName", async (req, res) => {
|
|
89
93
|
await authorize(req, backstagePluginKongServiceManagerCommon.kongServiceReadPermission);
|
|
90
94
|
const parsed = instanceServiceParams.safeParse(req.params);
|
package/dist/router.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs.js","sources":["../src/router.ts"],"sourcesContent":["import { HttpAuthService, PermissionsService } from '@backstage/backend-plugin-api';\nimport { InputError, NotAllowedError } from '@backstage/errors';\nimport { AuthorizeResult, type BasicPermission } from '@backstage/plugin-permission-common';\nimport { z } from 'zod';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport type { CreateRoute } from '@veecode-platform/backstage-plugin-kong-service-manager-common';\nimport {\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n} from '@veecode-platform/backstage-plugin-kong-service-manager-common';\nimport { KongServiceManagerService } from './services/KongServiceManagerService';\n\nexport async function createRouter({\n httpAuth,\n permissions,\n kongService,\n}: {\n httpAuth: HttpAuthService;\n permissions: PermissionsService;\n kongService: KongServiceManagerService;\n}): Promise<express.Router> {\n const router = Router();\n router.use(express.json());\n\n async function authorize(req: express.Request, permission: BasicPermission) {\n const credentials = await httpAuth.credentials(req);\n const decision = await permissions.authorize(\n [{ permission }],\n { credentials },\n );\n if (decision[0].result !== AuthorizeResult.ALLOW) {\n throw new NotAllowedError('Permission denied');\n }\n }\n\n // --- Validation schemas ---\n\n const instanceServiceParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n });\n\n const instanceServiceRouteParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n routeId: z.string(),\n });\n\n const instanceServicePluginParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n pluginId: z.string(),\n });\n\n const instanceRouteParams = z.object({\n instance: z.string(),\n routeId: z.string(),\n });\n\n const instanceRoutePluginParams = z.object({\n instance: z.string(),\n routeId: z.string(),\n pluginId: z.string(),\n });\n\n const createRouteBody = z.object({\n name: z.string().optional(),\n protocols: z.array(z.string()).optional(),\n methods: z.array(z.string()).optional(),\n hosts: z.array(z.string()).optional(),\n paths: z.array(z.string()).optional(),\n headers: z.record(z.array(z.string())).optional(),\n https_redirect_status_code: z.number().optional(),\n regex_priority: z.number().optional(),\n strip_path: z.boolean().optional(),\n path_handling: z.string().optional(),\n preserve_host: z.boolean().optional(),\n request_buffering: z.boolean().optional(),\n response_buffering: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n });\n\n const createPluginBody = z.object({\n name: z.string(),\n config: z.record(z.unknown()).optional(),\n enabled: z.boolean().optional(),\n protocols: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n });\n\n const editPluginBody = z.object({\n name: z.string().optional(),\n config: z.record(z.unknown()).optional(),\n enabled: z.boolean().optional(),\n protocols: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n });\n\n // --- Health check ---\n\n router.get('/health', async (_req, res) => {\n res.json({ status: 'ok' });\n });\n\n // --- Service routes (Phase 1) ---\n\n // GET /:instance/services/:serviceName\n router.get('/:instance/services/:serviceName', async (req, res) => {\n await authorize(req, kongServiceReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getServiceInfo(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n });\n\n // GET /:instance/services/:serviceName/plugins/associated\n router.get(\n '/:instance/services/:serviceName/plugins/associated',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getServiceAssociatedPlugins(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n },\n );\n\n // GET /:instance/plugins\n router.get('/:instance/plugins', async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const instance = z.string().safeParse(req.params.instance);\n if (!instance.success) throw new InputError(instance.error.toString());\n\n const result = await kongService.getAvailablePlugins(instance.data);\n res.json(result);\n });\n\n // --- Plugin schema introspection (Phase 2) ---\n\n // GET /:instance/services/plugins/:pluginName/fields\n router.get(\n '/:instance/services/plugins/:pluginName/fields',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = z\n .object({ instance: z.string(), pluginName: z.string() })\n .safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getPluginFields(\n parsed.data.instance,\n parsed.data.pluginName,\n );\n res.json(result);\n },\n );\n\n // --- Service plugin CRUD (Phase 2) ---\n\n // POST /:instance/services/:serviceName/plugins\n router.post(\n '/:instance/services/:serviceName/plugins',\n async (req, res) => {\n await authorize(req, kongApplyPluginServicePermission);\n\n const params = instanceServiceParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.addPluginToService(\n params.data.instance,\n params.data.serviceName,\n body.data,\n );\n res.status(201).json(result);\n },\n );\n\n // PATCH /:instance/services/:serviceName/plugins/:pluginId\n router.patch(\n '/:instance/services/:serviceName/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongUpdateServicePluginPermission);\n\n const params = instanceServicePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = editPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editServicePlugin(\n params.data.instance,\n params.data.serviceName,\n params.data.pluginId,\n body.data,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/services/:serviceName/plugins/:pluginId\n router.delete(\n '/:instance/services/:serviceName/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongDisableServicePluginPermission);\n\n const params = instanceServicePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeServicePlugin(\n params.data.instance,\n params.data.serviceName,\n params.data.pluginId,\n );\n res.status(204).end();\n },\n );\n\n // --- Route CRUD (Phase 3) ---\n\n // GET /:instance/services/:serviceName/routes\n router.get(\n '/:instance/services/:serviceName/routes',\n async (req, res) => {\n await authorize(req, kongRoutesReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRoutes(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n },\n );\n\n // GET /:instance/services/:serviceName/routes/:routeId\n router.get(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRoutesReadPermission);\n\n const parsed = instanceServiceRouteParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRouteById(\n parsed.data.instance,\n parsed.data.serviceName,\n parsed.data.routeId,\n );\n res.json(result);\n },\n );\n\n // POST /:instance/services/:serviceName/routes\n router.post(\n '/:instance/services/:serviceName/routes',\n async (req, res) => {\n await authorize(req, kongRouteCreatePermission);\n\n const params = instanceServiceParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createRouteBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.createRoute(\n params.data.instance,\n params.data.serviceName,\n body.data as CreateRoute,\n );\n res.status(201).json(result);\n },\n );\n\n // PATCH /:instance/services/:serviceName/routes/:routeId\n router.patch(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRouteUpdatePermission);\n\n const params = instanceServiceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createRouteBody.partial().safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editRoute(\n params.data.instance,\n params.data.serviceName,\n params.data.routeId,\n body.data as Partial<CreateRoute>,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/services/:serviceName/routes/:routeId\n router.delete(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRouteDeletePermission);\n\n const params = instanceServiceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeRoute(\n params.data.instance,\n params.data.serviceName,\n params.data.routeId,\n );\n res.status(204).end();\n },\n );\n\n // --- Route plugin CRUD (Phase 4) ---\n\n // GET /:instance/routes/:routeId/plugins/associated\n router.get(\n '/:instance/routes/:routeId/plugins/associated',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = instanceRouteParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRouteAssociatedPlugins(\n parsed.data.instance,\n parsed.data.routeId,\n );\n res.json(result);\n },\n );\n\n // POST /:instance/routes/:routeId/plugins\n router.post('/:instance/routes/:routeId/plugins', async (req, res) => {\n await authorize(req, kongApplyPluginRoutePermission);\n\n const params = instanceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.addPluginToRoute(\n params.data.instance,\n params.data.routeId,\n body.data,\n );\n res.status(201).json(result);\n });\n\n // PATCH /:instance/routes/:routeId/plugins/:pluginId\n router.patch(\n '/:instance/routes/:routeId/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongUpdateRoutePluginPermission);\n\n const params = instanceRoutePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = editPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editRoutePlugin(\n params.data.instance,\n params.data.routeId,\n params.data.pluginId,\n body.data,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/routes/:routeId/plugins/:pluginId\n router.delete(\n '/:instance/routes/:routeId/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongDisableRoutePluginPermission);\n\n const params = instanceRoutePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeRoutePlugin(\n params.data.instance,\n params.data.routeId,\n params.data.pluginId,\n );\n res.status(204).end();\n },\n );\n\n return router;\n}\n"],"names":["Router","express","AuthorizeResult","NotAllowedError","z","kongServiceReadPermission","InputError","kongPluginsReadPermission","kongApplyPluginServicePermission","kongUpdateServicePluginPermission","kongDisableServicePluginPermission","kongRoutesReadPermission","kongRouteCreatePermission","kongRouteUpdatePermission","kongRouteDeletePermission","kongApplyPluginRoutePermission","kongUpdateRoutePluginPermission","kongDisableRoutePluginPermission"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.cjs.js","sources":["../src/router.ts"],"sourcesContent":["import { HttpAuthService, PermissionsService } from '@backstage/backend-plugin-api';\nimport { InputError, NotAllowedError } from '@backstage/errors';\nimport { AuthorizeResult, type BasicPermission } from '@backstage/plugin-permission-common';\nimport { z } from 'zod';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport type { CreateRoute } from '@veecode-platform/backstage-plugin-kong-service-manager-common';\nimport {\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n kongInstancesReadPermission,\n} from '@veecode-platform/backstage-plugin-kong-service-manager-common';\nimport { KongServiceManagerService } from './services/KongServiceManagerService';\n\nexport async function createRouter({\n httpAuth,\n permissions,\n kongService,\n}: {\n httpAuth: HttpAuthService;\n permissions: PermissionsService;\n kongService: KongServiceManagerService;\n}): Promise<express.Router> {\n const router = Router();\n router.use(express.json());\n\n async function authorize(req: express.Request, permission: BasicPermission) {\n const credentials = await httpAuth.credentials(req);\n const decision = await permissions.authorize(\n [{ permission }],\n { credentials },\n );\n if (decision[0].result !== AuthorizeResult.ALLOW) {\n throw new NotAllowedError('Permission denied');\n }\n }\n\n // --- Validation schemas ---\n\n const instanceServiceParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n });\n\n const instanceServiceRouteParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n routeId: z.string(),\n });\n\n const instanceServicePluginParams = z.object({\n instance: z.string(),\n serviceName: z.string(),\n pluginId: z.string(),\n });\n\n const instanceRouteParams = z.object({\n instance: z.string(),\n routeId: z.string(),\n });\n\n const instanceRoutePluginParams = z.object({\n instance: z.string(),\n routeId: z.string(),\n pluginId: z.string(),\n });\n\n const createRouteBody = z.object({\n name: z.string().optional(),\n protocols: z.array(z.string()).optional(),\n methods: z.array(z.string()).optional(),\n hosts: z.array(z.string()).optional(),\n paths: z.array(z.string()).optional(),\n headers: z.record(z.array(z.string())).optional(),\n https_redirect_status_code: z.number().optional(),\n regex_priority: z.number().optional(),\n strip_path: z.boolean().optional(),\n path_handling: z.string().optional(),\n preserve_host: z.boolean().optional(),\n request_buffering: z.boolean().optional(),\n response_buffering: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n });\n\n const createPluginBody = z.object({\n name: z.string(),\n config: z.record(z.unknown()).optional(),\n enabled: z.boolean().optional(),\n protocols: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n });\n\n const editPluginBody = z.object({\n name: z.string().optional(),\n config: z.record(z.unknown()).optional(),\n enabled: z.boolean().optional(),\n protocols: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n });\n\n // --- Health check ---\n\n router.get('/health', async (_req, res) => {\n res.json({ status: 'ok' });\n });\n\n // --- Instances ---\n\n router.get('/instances', async (req, res) => {\n await authorize(req, kongInstancesReadPermission);\n res.json(kongService.getInstances());\n });\n\n // --- Service routes (Phase 1) ---\n\n // GET /:instance/services/:serviceName\n router.get('/:instance/services/:serviceName', async (req, res) => {\n await authorize(req, kongServiceReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getServiceInfo(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n });\n\n // GET /:instance/services/:serviceName/plugins/associated\n router.get(\n '/:instance/services/:serviceName/plugins/associated',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getServiceAssociatedPlugins(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n },\n );\n\n // GET /:instance/plugins\n router.get('/:instance/plugins', async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const instance = z.string().safeParse(req.params.instance);\n if (!instance.success) throw new InputError(instance.error.toString());\n\n const result = await kongService.getAvailablePlugins(instance.data);\n res.json(result);\n });\n\n // --- Plugin schema introspection (Phase 2) ---\n\n // GET /:instance/services/plugins/:pluginName/fields\n router.get(\n '/:instance/services/plugins/:pluginName/fields',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = z\n .object({ instance: z.string(), pluginName: z.string() })\n .safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getPluginFields(\n parsed.data.instance,\n parsed.data.pluginName,\n );\n res.json(result);\n },\n );\n\n // --- Service plugin CRUD (Phase 2) ---\n\n // POST /:instance/services/:serviceName/plugins\n router.post(\n '/:instance/services/:serviceName/plugins',\n async (req, res) => {\n await authorize(req, kongApplyPluginServicePermission);\n\n const params = instanceServiceParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.addPluginToService(\n params.data.instance,\n params.data.serviceName,\n body.data,\n );\n res.status(201).json(result);\n },\n );\n\n // PATCH /:instance/services/:serviceName/plugins/:pluginId\n router.patch(\n '/:instance/services/:serviceName/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongUpdateServicePluginPermission);\n\n const params = instanceServicePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = editPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editServicePlugin(\n params.data.instance,\n params.data.serviceName,\n params.data.pluginId,\n body.data,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/services/:serviceName/plugins/:pluginId\n router.delete(\n '/:instance/services/:serviceName/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongDisableServicePluginPermission);\n\n const params = instanceServicePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeServicePlugin(\n params.data.instance,\n params.data.serviceName,\n params.data.pluginId,\n );\n res.status(204).end();\n },\n );\n\n // --- Route CRUD (Phase 3) ---\n\n // GET /:instance/services/:serviceName/routes\n router.get(\n '/:instance/services/:serviceName/routes',\n async (req, res) => {\n await authorize(req, kongRoutesReadPermission);\n\n const parsed = instanceServiceParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRoutes(\n parsed.data.instance,\n parsed.data.serviceName,\n );\n res.json(result);\n },\n );\n\n // GET /:instance/services/:serviceName/routes/:routeId\n router.get(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRoutesReadPermission);\n\n const parsed = instanceServiceRouteParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRouteById(\n parsed.data.instance,\n parsed.data.serviceName,\n parsed.data.routeId,\n );\n res.json(result);\n },\n );\n\n // POST /:instance/services/:serviceName/routes\n router.post(\n '/:instance/services/:serviceName/routes',\n async (req, res) => {\n await authorize(req, kongRouteCreatePermission);\n\n const params = instanceServiceParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createRouteBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.createRoute(\n params.data.instance,\n params.data.serviceName,\n body.data as CreateRoute,\n );\n res.status(201).json(result);\n },\n );\n\n // PATCH /:instance/services/:serviceName/routes/:routeId\n router.patch(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRouteUpdatePermission);\n\n const params = instanceServiceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createRouteBody.partial().safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editRoute(\n params.data.instance,\n params.data.serviceName,\n params.data.routeId,\n body.data as Partial<CreateRoute>,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/services/:serviceName/routes/:routeId\n router.delete(\n '/:instance/services/:serviceName/routes/:routeId',\n async (req, res) => {\n await authorize(req, kongRouteDeletePermission);\n\n const params = instanceServiceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeRoute(\n params.data.instance,\n params.data.serviceName,\n params.data.routeId,\n );\n res.status(204).end();\n },\n );\n\n // --- Route plugin CRUD (Phase 4) ---\n\n // GET /:instance/routes/:routeId/plugins/associated\n router.get(\n '/:instance/routes/:routeId/plugins/associated',\n async (req, res) => {\n await authorize(req, kongPluginsReadPermission);\n\n const parsed = instanceRouteParams.safeParse(req.params);\n if (!parsed.success) throw new InputError(parsed.error.toString());\n\n const result = await kongService.getRouteAssociatedPlugins(\n parsed.data.instance,\n parsed.data.routeId,\n );\n res.json(result);\n },\n );\n\n // POST /:instance/routes/:routeId/plugins\n router.post('/:instance/routes/:routeId/plugins', async (req, res) => {\n await authorize(req, kongApplyPluginRoutePermission);\n\n const params = instanceRouteParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = createPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.addPluginToRoute(\n params.data.instance,\n params.data.routeId,\n body.data,\n );\n res.status(201).json(result);\n });\n\n // PATCH /:instance/routes/:routeId/plugins/:pluginId\n router.patch(\n '/:instance/routes/:routeId/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongUpdateRoutePluginPermission);\n\n const params = instanceRoutePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n const body = editPluginBody.safeParse(req.body);\n if (!body.success) throw new InputError(body.error.toString());\n\n const result = await kongService.editRoutePlugin(\n params.data.instance,\n params.data.routeId,\n params.data.pluginId,\n body.data,\n );\n res.json(result);\n },\n );\n\n // DELETE /:instance/routes/:routeId/plugins/:pluginId\n router.delete(\n '/:instance/routes/:routeId/plugins/:pluginId',\n async (req, res) => {\n await authorize(req, kongDisableRoutePluginPermission);\n\n const params = instanceRoutePluginParams.safeParse(req.params);\n if (!params.success) throw new InputError(params.error.toString());\n\n await kongService.removeRoutePlugin(\n params.data.instance,\n params.data.routeId,\n params.data.pluginId,\n );\n res.status(204).end();\n },\n );\n\n return router;\n}\n"],"names":["Router","express","AuthorizeResult","NotAllowedError","z","kongInstancesReadPermission","kongServiceReadPermission","InputError","kongPluginsReadPermission","kongApplyPluginServicePermission","kongUpdateServicePluginPermission","kongDisableServicePluginPermission","kongRoutesReadPermission","kongRouteCreatePermission","kongRouteUpdatePermission","kongRouteDeletePermission","kongApplyPluginRoutePermission","kongUpdateRoutePluginPermission","kongDisableRoutePluginPermission"],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ class KongServiceManagerService {
|
|
|
26
26
|
const id = c.getString("id");
|
|
27
27
|
const apiBaseUrl = c.getString("apiBaseUrl");
|
|
28
28
|
const workspace = c.getOptionalString("workspace");
|
|
29
|
+
const description = c.getOptionalString("description");
|
|
29
30
|
let auth;
|
|
30
31
|
if (c.has("auth.kongAdmin")) {
|
|
31
32
|
auth = { kongAdmin: c.getString("auth.kongAdmin") };
|
|
@@ -39,7 +40,7 @@ class KongServiceManagerService {
|
|
|
39
40
|
} else {
|
|
40
41
|
auth = { kongAdmin: "" };
|
|
41
42
|
}
|
|
42
|
-
return { id, apiBaseUrl, workspace, auth };
|
|
43
|
+
return { id, apiBaseUrl, workspace, description, auth };
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
getInstance(instanceName) {
|
|
@@ -92,6 +93,15 @@ class KongServiceManagerService {
|
|
|
92
93
|
}
|
|
93
94
|
return response.json();
|
|
94
95
|
}
|
|
96
|
+
// --- Instance operations ---
|
|
97
|
+
getInstances() {
|
|
98
|
+
return this.#instances.map((i) => ({
|
|
99
|
+
id: i.id,
|
|
100
|
+
apiBaseUrl: i.apiBaseUrl,
|
|
101
|
+
workspace: i.workspace,
|
|
102
|
+
description: i.description
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
95
105
|
// --- Service operations ---
|
|
96
106
|
async getServiceInfo(instanceName, serviceName) {
|
|
97
107
|
return this.kongFetch(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KongServiceManagerService.cjs.js","sources":["../../src/services/KongServiceManagerService.ts"],"sourcesContent":["import {\n coreServices,\n createServiceFactory,\n createServiceRef,\n LoggerService,\n} from '@backstage/backend-plugin-api';\nimport { Config } from '@backstage/config';\nimport { NotFoundError } from '@backstage/errors';\nimport type {\n ServiceInfoResponse,\n RoutesResponse,\n RouteResponse,\n CreateRoute,\n AssociatedPluginsResponse,\n PluginFieldsResponse,\n CreatePlugin,\n AvailablePluginsResponse,\n} from '@veecode-platform/backstage-plugin-kong-service-manager-common';\n\n/** Configuration for a single Kong instance */\nexport type KongInstanceConfig = {\n id: string;\n apiBaseUrl: string;\n workspace?: string;\n auth:\n | { kongAdmin: string }\n | { custom: { header: string; value: string } };\n};\n\nexport class KongServiceManagerService {\n readonly #logger: LoggerService;\n readonly #instances: KongInstanceConfig[];\n\n static create(options: { logger: LoggerService; config: Config }) {\n return new KongServiceManagerService(options.logger, options.config);\n }\n\n private constructor(logger: LoggerService, config: Config) {\n this.#logger = logger;\n this.#instances = this.readInstances(config);\n this.#logger.info(\n `Kong Service Manager initialized with ${this.#instances.length} instance(s)`,\n );\n }\n\n private readInstances(config: Config): KongInstanceConfig[] {\n if (!config.has('kong.instances')) {\n this.#logger.warn('No kong.instances configured');\n return [];\n }\n\n const instancesConfig = config.getConfigArray('kong.instances');\n return instancesConfig.map(c => {\n const id = c.getString('id');\n const apiBaseUrl = c.getString('apiBaseUrl');\n const workspace = c.getOptionalString('workspace');\n\n let auth: KongInstanceConfig['auth'];\n if (c.has('auth.kongAdmin')) {\n auth = { kongAdmin: c.getString('auth.kongAdmin') };\n } else if (c.has('auth.custom')) {\n auth = {\n custom: {\n header: c.getString('auth.custom.header'),\n value: c.getString('auth.custom.value'),\n },\n };\n } else {\n auth = { kongAdmin: '' };\n }\n\n return { id, apiBaseUrl, workspace, auth };\n });\n }\n\n private getInstance(instanceName: string): KongInstanceConfig {\n const instance = this.#instances.find(i => i.id === instanceName);\n if (!instance) {\n throw new NotFoundError(\n `Kong instance '${instanceName}' not found in configuration`,\n );\n }\n return instance;\n }\n\n private buildUrl(instance: KongInstanceConfig, path: string): string {\n const base = instance.apiBaseUrl.replace(/\\/$/, '');\n if (instance.workspace) {\n return `${base}/${instance.workspace}${path}`;\n }\n return `${base}${path}`;\n }\n\n private buildHeaders(instance: KongInstanceConfig): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n if ('kongAdmin' in instance.auth && instance.auth.kongAdmin) {\n headers['Kong-Admin-Token'] = instance.auth.kongAdmin;\n } else if ('custom' in instance.auth) {\n headers[instance.auth.custom.header] = instance.auth.custom.value;\n }\n\n return headers;\n }\n\n private async kongFetch<T>(\n instanceName: string,\n path: string,\n options?: RequestInit,\n ): Promise<T> {\n const instance = this.getInstance(instanceName);\n const url = this.buildUrl(instance, path);\n const headers = this.buildHeaders(instance);\n\n this.#logger.debug(`Kong API request: ${options?.method ?? 'GET'} ${url}`);\n\n const response = await fetch(url, {\n ...options,\n headers: { ...headers, ...options?.headers },\n });\n\n if (!response.ok) {\n const body = await response.text();\n this.#logger.error(\n `Kong API error: ${response.status} ${response.statusText} - ${body}`,\n );\n throw new Error(\n `Kong API request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n\n // --- Service operations ---\n\n async getServiceInfo(\n instanceName: string,\n serviceName: string,\n ): Promise<ServiceInfoResponse> {\n return this.kongFetch<ServiceInfoResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}`,\n );\n }\n\n // --- Route operations ---\n\n async getRoutes(\n instanceName: string,\n serviceName: string,\n ): Promise<RoutesResponse> {\n return this.kongFetch<RoutesResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes`,\n );\n }\n\n async getRouteById(\n instanceName: string,\n serviceName: string,\n routeId: string,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n );\n }\n\n async createRoute(\n instanceName: string,\n serviceName: string,\n route: CreateRoute,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes`,\n {\n method: 'POST',\n body: JSON.stringify(route),\n },\n );\n }\n\n async editRoute(\n instanceName: string,\n serviceName: string,\n routeId: string,\n route: Partial<CreateRoute>,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(route),\n },\n );\n }\n\n async removeRoute(\n instanceName: string,\n serviceName: string,\n routeId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n { method: 'DELETE' },\n );\n }\n\n // --- Plugin operations on services ---\n\n async getServiceAssociatedPlugins(\n instanceName: string,\n serviceName: string,\n ): Promise<AssociatedPluginsResponse[]> {\n const result = await this.kongFetch<{ data: AssociatedPluginsResponse[] }>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins`,\n );\n return result.data;\n }\n\n async getAvailablePlugins(\n instanceName: string,\n ): Promise<AvailablePluginsResponse> {\n return this.kongFetch<AvailablePluginsResponse>(\n instanceName,\n '/plugins/enabled',\n );\n }\n\n async getPluginFields(\n instanceName: string,\n pluginName: string,\n ): Promise<PluginFieldsResponse> {\n return this.kongFetch<PluginFieldsResponse>(\n instanceName,\n `/schemas/plugins/${encodeURIComponent(pluginName)}`,\n );\n }\n\n async addPluginToService(\n instanceName: string,\n serviceName: string,\n plugin: CreatePlugin,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins`,\n {\n method: 'POST',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async editServicePlugin(\n instanceName: string,\n serviceName: string,\n pluginId: string,\n plugin: Partial<CreatePlugin>,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins/${encodeURIComponent(pluginId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async removeServicePlugin(\n instanceName: string,\n serviceName: string,\n pluginId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins/${encodeURIComponent(pluginId)}`,\n { method: 'DELETE' },\n );\n }\n\n // --- Plugin operations on routes ---\n\n async getRouteAssociatedPlugins(\n instanceName: string,\n routeId: string,\n ): Promise<AssociatedPluginsResponse[]> {\n const result = await this.kongFetch<{ data: AssociatedPluginsResponse[] }>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins`,\n );\n return result.data;\n }\n\n async addPluginToRoute(\n instanceName: string,\n routeId: string,\n plugin: CreatePlugin,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins`,\n {\n method: 'POST',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async editRoutePlugin(\n instanceName: string,\n routeId: string,\n pluginId: string,\n plugin: Partial<CreatePlugin>,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins/${encodeURIComponent(pluginId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async removeRoutePlugin(\n instanceName: string,\n routeId: string,\n pluginId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins/${encodeURIComponent(pluginId)}`,\n { method: 'DELETE' },\n );\n }\n}\n\nexport const kongServiceManagerServiceRef =\n createServiceRef<KongServiceManagerService>({\n id: 'kong-service-manager.service',\n defaultFactory: async service =>\n createServiceFactory({\n service,\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n },\n async factory(deps) {\n return KongServiceManagerService.create(deps);\n },\n }),\n });\n"],"names":["NotFoundError","createServiceRef","createServiceFactory","coreServices"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KongServiceManagerService.cjs.js","sources":["../../src/services/KongServiceManagerService.ts"],"sourcesContent":["import {\n coreServices,\n createServiceFactory,\n createServiceRef,\n LoggerService,\n} from '@backstage/backend-plugin-api';\nimport { Config } from '@backstage/config';\nimport { NotFoundError } from '@backstage/errors';\nimport type {\n ServiceInfoResponse,\n RoutesResponse,\n RouteResponse,\n CreateRoute,\n AssociatedPluginsResponse,\n PluginFieldsResponse,\n CreatePlugin,\n AvailablePluginsResponse,\n} from '@veecode-platform/backstage-plugin-kong-service-manager-common';\n\n/** Configuration for a single Kong instance */\nexport type KongInstanceConfig = {\n id: string;\n apiBaseUrl: string;\n workspace?: string;\n description?: string;\n auth:\n | { kongAdmin: string }\n | { custom: { header: string; value: string } };\n};\n\nexport class KongServiceManagerService {\n readonly #logger: LoggerService;\n readonly #instances: KongInstanceConfig[];\n\n static create(options: { logger: LoggerService; config: Config }) {\n return new KongServiceManagerService(options.logger, options.config);\n }\n\n private constructor(logger: LoggerService, config: Config) {\n this.#logger = logger;\n this.#instances = this.readInstances(config);\n this.#logger.info(\n `Kong Service Manager initialized with ${this.#instances.length} instance(s)`,\n );\n }\n\n private readInstances(config: Config): KongInstanceConfig[] {\n if (!config.has('kong.instances')) {\n this.#logger.warn('No kong.instances configured');\n return [];\n }\n\n const instancesConfig = config.getConfigArray('kong.instances');\n return instancesConfig.map(c => {\n const id = c.getString('id');\n const apiBaseUrl = c.getString('apiBaseUrl');\n const workspace = c.getOptionalString('workspace');\n const description = c.getOptionalString('description');\n\n let auth: KongInstanceConfig['auth'];\n if (c.has('auth.kongAdmin')) {\n auth = { kongAdmin: c.getString('auth.kongAdmin') };\n } else if (c.has('auth.custom')) {\n auth = {\n custom: {\n header: c.getString('auth.custom.header'),\n value: c.getString('auth.custom.value'),\n },\n };\n } else {\n auth = { kongAdmin: '' };\n }\n\n return { id, apiBaseUrl, workspace, description, auth };\n });\n }\n\n private getInstance(instanceName: string): KongInstanceConfig {\n const instance = this.#instances.find(i => i.id === instanceName);\n if (!instance) {\n throw new NotFoundError(\n `Kong instance '${instanceName}' not found in configuration`,\n );\n }\n return instance;\n }\n\n private buildUrl(instance: KongInstanceConfig, path: string): string {\n const base = instance.apiBaseUrl.replace(/\\/$/, '');\n if (instance.workspace) {\n return `${base}/${instance.workspace}${path}`;\n }\n return `${base}${path}`;\n }\n\n private buildHeaders(instance: KongInstanceConfig): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n if ('kongAdmin' in instance.auth && instance.auth.kongAdmin) {\n headers['Kong-Admin-Token'] = instance.auth.kongAdmin;\n } else if ('custom' in instance.auth) {\n headers[instance.auth.custom.header] = instance.auth.custom.value;\n }\n\n return headers;\n }\n\n private async kongFetch<T>(\n instanceName: string,\n path: string,\n options?: RequestInit,\n ): Promise<T> {\n const instance = this.getInstance(instanceName);\n const url = this.buildUrl(instance, path);\n const headers = this.buildHeaders(instance);\n\n this.#logger.debug(`Kong API request: ${options?.method ?? 'GET'} ${url}`);\n\n const response = await fetch(url, {\n ...options,\n headers: { ...headers, ...options?.headers },\n });\n\n if (!response.ok) {\n const body = await response.text();\n this.#logger.error(\n `Kong API error: ${response.status} ${response.statusText} - ${body}`,\n );\n throw new Error(\n `Kong API request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n\n // --- Instance operations ---\n\n getInstances(): Array<{ id: string; apiBaseUrl: string; workspace?: string; description?: string }> {\n return this.#instances.map(i => ({\n id: i.id,\n apiBaseUrl: i.apiBaseUrl,\n workspace: i.workspace,\n description: i.description,\n }));\n }\n\n // --- Service operations ---\n\n async getServiceInfo(\n instanceName: string,\n serviceName: string,\n ): Promise<ServiceInfoResponse> {\n return this.kongFetch<ServiceInfoResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}`,\n );\n }\n\n // --- Route operations ---\n\n async getRoutes(\n instanceName: string,\n serviceName: string,\n ): Promise<RoutesResponse> {\n return this.kongFetch<RoutesResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes`,\n );\n }\n\n async getRouteById(\n instanceName: string,\n serviceName: string,\n routeId: string,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n );\n }\n\n async createRoute(\n instanceName: string,\n serviceName: string,\n route: CreateRoute,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes`,\n {\n method: 'POST',\n body: JSON.stringify(route),\n },\n );\n }\n\n async editRoute(\n instanceName: string,\n serviceName: string,\n routeId: string,\n route: Partial<CreateRoute>,\n ): Promise<RouteResponse> {\n return this.kongFetch<RouteResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(route),\n },\n );\n }\n\n async removeRoute(\n instanceName: string,\n serviceName: string,\n routeId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/routes/${encodeURIComponent(routeId)}`,\n { method: 'DELETE' },\n );\n }\n\n // --- Plugin operations on services ---\n\n async getServiceAssociatedPlugins(\n instanceName: string,\n serviceName: string,\n ): Promise<AssociatedPluginsResponse[]> {\n const result = await this.kongFetch<{ data: AssociatedPluginsResponse[] }>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins`,\n );\n return result.data;\n }\n\n async getAvailablePlugins(\n instanceName: string,\n ): Promise<AvailablePluginsResponse> {\n return this.kongFetch<AvailablePluginsResponse>(\n instanceName,\n '/plugins/enabled',\n );\n }\n\n async getPluginFields(\n instanceName: string,\n pluginName: string,\n ): Promise<PluginFieldsResponse> {\n return this.kongFetch<PluginFieldsResponse>(\n instanceName,\n `/schemas/plugins/${encodeURIComponent(pluginName)}`,\n );\n }\n\n async addPluginToService(\n instanceName: string,\n serviceName: string,\n plugin: CreatePlugin,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins`,\n {\n method: 'POST',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async editServicePlugin(\n instanceName: string,\n serviceName: string,\n pluginId: string,\n plugin: Partial<CreatePlugin>,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins/${encodeURIComponent(pluginId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async removeServicePlugin(\n instanceName: string,\n serviceName: string,\n pluginId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/services/${encodeURIComponent(serviceName)}/plugins/${encodeURIComponent(pluginId)}`,\n { method: 'DELETE' },\n );\n }\n\n // --- Plugin operations on routes ---\n\n async getRouteAssociatedPlugins(\n instanceName: string,\n routeId: string,\n ): Promise<AssociatedPluginsResponse[]> {\n const result = await this.kongFetch<{ data: AssociatedPluginsResponse[] }>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins`,\n );\n return result.data;\n }\n\n async addPluginToRoute(\n instanceName: string,\n routeId: string,\n plugin: CreatePlugin,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins`,\n {\n method: 'POST',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async editRoutePlugin(\n instanceName: string,\n routeId: string,\n pluginId: string,\n plugin: Partial<CreatePlugin>,\n ): Promise<AssociatedPluginsResponse> {\n return this.kongFetch<AssociatedPluginsResponse>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins/${encodeURIComponent(pluginId)}`,\n {\n method: 'PATCH',\n body: JSON.stringify(plugin),\n },\n );\n }\n\n async removeRoutePlugin(\n instanceName: string,\n routeId: string,\n pluginId: string,\n ): Promise<void> {\n await this.kongFetch<void>(\n instanceName,\n `/routes/${encodeURIComponent(routeId)}/plugins/${encodeURIComponent(pluginId)}`,\n { method: 'DELETE' },\n );\n }\n}\n\nexport const kongServiceManagerServiceRef =\n createServiceRef<KongServiceManagerService>({\n id: 'kong-service-manager.service',\n defaultFactory: async service =>\n createServiceFactory({\n service,\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n },\n async factory(deps) {\n return KongServiceManagerService.create(deps);\n },\n }),\n });\n"],"names":["NotFoundError","createServiceRef","createServiceFactory","coreServices"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ exports.kongApplyPluginRoutePermission = permissions.kongApplyPluginRoutePermiss
|
|
|
11
11
|
exports.kongApplyPluginServicePermission = permissions.kongApplyPluginServicePermission;
|
|
12
12
|
exports.kongDisableRoutePluginPermission = permissions.kongDisableRoutePluginPermission;
|
|
13
13
|
exports.kongDisableServicePluginPermission = permissions.kongDisableServicePluginPermission;
|
|
14
|
+
exports.kongInstancesReadPermission = permissions.kongInstancesReadPermission;
|
|
14
15
|
exports.kongPermissions = permissions.kongPermissions;
|
|
15
16
|
exports.kongPluginsReadPermission = permissions.kongPluginsReadPermission;
|
|
16
17
|
exports.kongRouteCreatePermission = permissions.kongRouteCreatePermission;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/node_modules/@veecode-platform/backstage-plugin-kong-service-manager-common/dist/index.d.ts
CHANGED
|
@@ -172,6 +172,8 @@ declare const kongRouteCreatePermission: _backstage_plugin_permission_common.Bas
|
|
|
172
172
|
declare const kongRouteUpdatePermission: _backstage_plugin_permission_common.BasicPermission;
|
|
173
173
|
/** Permission to delete a Kong route */
|
|
174
174
|
declare const kongRouteDeletePermission: _backstage_plugin_permission_common.BasicPermission;
|
|
175
|
+
/** Permission to list available Kong instances */
|
|
176
|
+
declare const kongInstancesReadPermission: _backstage_plugin_permission_common.BasicPermission;
|
|
175
177
|
/** Permission to add a plugin to a Kong route */
|
|
176
178
|
declare const kongApplyPluginRoutePermission: _backstage_plugin_permission_common.BasicPermission;
|
|
177
179
|
/** Permission to update a plugin on a Kong route */
|
|
@@ -224,5 +226,5 @@ interface KongServiceManagerApi {
|
|
|
224
226
|
removeRoutePlugin(instance: string, routeId: string, pluginId: string): Promise<void>;
|
|
225
227
|
}
|
|
226
228
|
|
|
227
|
-
export { KONG_SERVICE_INSTANCE_ANNOTATION, KONG_SERVICE_NAME_ANNOTATION, PluginCategory, isKongServiceManagerAvailable, kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission };
|
|
229
|
+
export { KONG_SERVICE_INSTANCE_ANNOTATION, KONG_SERVICE_NAME_ANNOTATION, PluginCategory, isKongServiceManagerAvailable, kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongInstancesReadPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission };
|
|
228
230
|
export type { AssociatedPluginsResponse, AvailablePluginsResponse, CreatePlugin, CreateRoute, HttpMethod, KongServiceManagerApi, PluginCard, PluginFieldsResponse, PluginPerCategory, RouteProtocol, RouteResponse, RoutesResponse, SchemaField, ServiceInfoResponse };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { PluginCategory } from './types.esm.js';
|
|
2
|
-
export { kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission } from './permissions.esm.js';
|
|
2
|
+
export { kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongInstancesReadPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission } from './permissions.esm.js';
|
|
3
3
|
export { KONG_SERVICE_INSTANCE_ANNOTATION, KONG_SERVICE_NAME_ANNOTATION, isKongServiceManagerAvailable } from './annotations.esm.js';
|
|
4
4
|
//# sourceMappingURL=index.esm.js.map
|
|
@@ -38,6 +38,10 @@ const kongRouteDeletePermission = pluginPermissionCommon.createPermission({
|
|
|
38
38
|
name: "kong.route.delete",
|
|
39
39
|
attributes: { action: "delete" }
|
|
40
40
|
});
|
|
41
|
+
const kongInstancesReadPermission = pluginPermissionCommon.createPermission({
|
|
42
|
+
name: "kong.instances.read",
|
|
43
|
+
attributes: { action: "read" }
|
|
44
|
+
});
|
|
41
45
|
const kongApplyPluginRoutePermission = pluginPermissionCommon.createPermission({
|
|
42
46
|
name: "kong.plugin.route.apply",
|
|
43
47
|
attributes: { action: "create" }
|
|
@@ -62,13 +66,15 @@ const kongPermissions = [
|
|
|
62
66
|
kongRouteDeletePermission,
|
|
63
67
|
kongApplyPluginRoutePermission,
|
|
64
68
|
kongUpdateRoutePluginPermission,
|
|
65
|
-
kongDisableRoutePluginPermission
|
|
69
|
+
kongDisableRoutePluginPermission,
|
|
70
|
+
kongInstancesReadPermission
|
|
66
71
|
];
|
|
67
72
|
|
|
68
73
|
exports.kongApplyPluginRoutePermission = kongApplyPluginRoutePermission;
|
|
69
74
|
exports.kongApplyPluginServicePermission = kongApplyPluginServicePermission;
|
|
70
75
|
exports.kongDisableRoutePluginPermission = kongDisableRoutePluginPermission;
|
|
71
76
|
exports.kongDisableServicePluginPermission = kongDisableServicePluginPermission;
|
|
77
|
+
exports.kongInstancesReadPermission = kongInstancesReadPermission;
|
|
72
78
|
exports.kongPermissions = kongPermissions;
|
|
73
79
|
exports.kongPluginsReadPermission = kongPluginsReadPermission;
|
|
74
80
|
exports.kongRouteCreatePermission = kongRouteCreatePermission;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.cjs.js","sources":["../src/permissions.ts"],"sourcesContent":["import { createPermission } from '@backstage/plugin-permission-common';\n\n/** Permission to read Kong service information */\nexport const kongServiceReadPermission = createPermission({\n name: 'kong.service.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read available and associated Kong plugins */\nexport const kongPluginsReadPermission = createPermission({\n name: 'kong.plugins.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read Kong routes */\nexport const kongRoutesReadPermission = createPermission({\n name: 'kong.routes.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong service */\nexport const kongApplyPluginServicePermission = createPermission({\n name: 'kong.plugin.service.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong service */\nexport const kongUpdateServicePluginPermission = createPermission({\n name: 'kong.plugin.service.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong service */\nexport const kongDisableServicePluginPermission = createPermission({\n name: 'kong.plugin.service.disable',\n attributes: { action: 'delete' },\n});\n\n/** Permission to create a Kong route */\nexport const kongRouteCreatePermission = createPermission({\n name: 'kong.route.create',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a Kong route */\nexport const kongRouteUpdatePermission = createPermission({\n name: 'kong.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to delete a Kong route */\nexport const kongRouteDeletePermission = createPermission({\n name: 'kong.route.delete',\n attributes: { action: 'delete' },\n});\n\n/** Permission to add a plugin to a Kong route */\nexport const kongApplyPluginRoutePermission = createPermission({\n name: 'kong.plugin.route.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong route */\nexport const kongUpdateRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong route */\nexport const kongDisableRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.disable',\n attributes: { action: 'delete' },\n});\n\n/** All Kong Service Manager permissions */\nexport const kongPermissions = [\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n];\n"],"names":["createPermission"],"mappings":";;;;AAGO,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,2BAA2BA,uCAAA,CAAiB;AAAA,EACvD,IAAA,EAAM,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,mCAAmCA,uCAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,oCAAoCA,uCAAA,CAAiB;AAAA,EAChE,IAAA,EAAM,4BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,qCAAqCA,uCAAA,CAAiB;AAAA,EACjE,IAAA,EAAM,6BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,iCAAiCA,uCAAA,CAAiB;AAAA,EAC7D,IAAA,EAAM,yBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,kCAAkCA,uCAAA,CAAiB;AAAA,EAC9D,IAAA,EAAM,0BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,mCAAmCA,uCAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,eAAA,GAAkB;AAAA,EAC7B,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA;AACF
|
|
1
|
+
{"version":3,"file":"permissions.cjs.js","sources":["../src/permissions.ts"],"sourcesContent":["import { createPermission } from '@backstage/plugin-permission-common';\n\n/** Permission to read Kong service information */\nexport const kongServiceReadPermission = createPermission({\n name: 'kong.service.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read available and associated Kong plugins */\nexport const kongPluginsReadPermission = createPermission({\n name: 'kong.plugins.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read Kong routes */\nexport const kongRoutesReadPermission = createPermission({\n name: 'kong.routes.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong service */\nexport const kongApplyPluginServicePermission = createPermission({\n name: 'kong.plugin.service.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong service */\nexport const kongUpdateServicePluginPermission = createPermission({\n name: 'kong.plugin.service.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong service */\nexport const kongDisableServicePluginPermission = createPermission({\n name: 'kong.plugin.service.disable',\n attributes: { action: 'delete' },\n});\n\n/** Permission to create a Kong route */\nexport const kongRouteCreatePermission = createPermission({\n name: 'kong.route.create',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a Kong route */\nexport const kongRouteUpdatePermission = createPermission({\n name: 'kong.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to delete a Kong route */\nexport const kongRouteDeletePermission = createPermission({\n name: 'kong.route.delete',\n attributes: { action: 'delete' },\n});\n\n/** Permission to list available Kong instances */\nexport const kongInstancesReadPermission = createPermission({\n name: 'kong.instances.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong route */\nexport const kongApplyPluginRoutePermission = createPermission({\n name: 'kong.plugin.route.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong route */\nexport const kongUpdateRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong route */\nexport const kongDisableRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.disable',\n attributes: { action: 'delete' },\n});\n\n/** All Kong Service Manager permissions */\nexport const kongPermissions = [\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n kongInstancesReadPermission,\n];\n"],"names":["createPermission"],"mappings":";;;;AAGO,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,2BAA2BA,uCAAA,CAAiB;AAAA,EACvD,IAAA,EAAM,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,mCAAmCA,uCAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,oCAAoCA,uCAAA,CAAiB;AAAA,EAChE,IAAA,EAAM,4BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,qCAAqCA,uCAAA,CAAiB;AAAA,EACjE,IAAA,EAAM,6BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4BA,uCAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,8BAA8BA,uCAAA,CAAiB;AAAA,EAC1D,IAAA,EAAM,qBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,iCAAiCA,uCAAA,CAAiB;AAAA,EAC7D,IAAA,EAAM,yBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,kCAAkCA,uCAAA,CAAiB;AAAA,EAC9D,IAAA,EAAM,0BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,mCAAmCA,uCAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,eAAA,GAAkB;AAAA,EAC7B,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA,gCAAA;AAAA,EACA;AACF;;;;;;;;;;;;;;;;;"}
|
|
@@ -36,6 +36,10 @@ const kongRouteDeletePermission = createPermission({
|
|
|
36
36
|
name: "kong.route.delete",
|
|
37
37
|
attributes: { action: "delete" }
|
|
38
38
|
});
|
|
39
|
+
const kongInstancesReadPermission = createPermission({
|
|
40
|
+
name: "kong.instances.read",
|
|
41
|
+
attributes: { action: "read" }
|
|
42
|
+
});
|
|
39
43
|
const kongApplyPluginRoutePermission = createPermission({
|
|
40
44
|
name: "kong.plugin.route.apply",
|
|
41
45
|
attributes: { action: "create" }
|
|
@@ -60,8 +64,9 @@ const kongPermissions = [
|
|
|
60
64
|
kongRouteDeletePermission,
|
|
61
65
|
kongApplyPluginRoutePermission,
|
|
62
66
|
kongUpdateRoutePluginPermission,
|
|
63
|
-
kongDisableRoutePluginPermission
|
|
67
|
+
kongDisableRoutePluginPermission,
|
|
68
|
+
kongInstancesReadPermission
|
|
64
69
|
];
|
|
65
70
|
|
|
66
|
-
export { kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission };
|
|
71
|
+
export { kongApplyPluginRoutePermission, kongApplyPluginServicePermission, kongDisableRoutePluginPermission, kongDisableServicePluginPermission, kongInstancesReadPermission, kongPermissions, kongPluginsReadPermission, kongRouteCreatePermission, kongRouteDeletePermission, kongRouteUpdatePermission, kongRoutesReadPermission, kongServiceReadPermission, kongUpdateRoutePluginPermission, kongUpdateServicePluginPermission };
|
|
67
72
|
//# sourceMappingURL=permissions.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.esm.js","sources":["../src/permissions.ts"],"sourcesContent":["import { createPermission } from '@backstage/plugin-permission-common';\n\n/** Permission to read Kong service information */\nexport const kongServiceReadPermission = createPermission({\n name: 'kong.service.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read available and associated Kong plugins */\nexport const kongPluginsReadPermission = createPermission({\n name: 'kong.plugins.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read Kong routes */\nexport const kongRoutesReadPermission = createPermission({\n name: 'kong.routes.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong service */\nexport const kongApplyPluginServicePermission = createPermission({\n name: 'kong.plugin.service.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong service */\nexport const kongUpdateServicePluginPermission = createPermission({\n name: 'kong.plugin.service.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong service */\nexport const kongDisableServicePluginPermission = createPermission({\n name: 'kong.plugin.service.disable',\n attributes: { action: 'delete' },\n});\n\n/** Permission to create a Kong route */\nexport const kongRouteCreatePermission = createPermission({\n name: 'kong.route.create',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a Kong route */\nexport const kongRouteUpdatePermission = createPermission({\n name: 'kong.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to delete a Kong route */\nexport const kongRouteDeletePermission = createPermission({\n name: 'kong.route.delete',\n attributes: { action: 'delete' },\n});\n\n/** Permission to add a plugin to a Kong route */\nexport const kongApplyPluginRoutePermission = createPermission({\n name: 'kong.plugin.route.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong route */\nexport const kongUpdateRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong route */\nexport const kongDisableRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.disable',\n attributes: { action: 'delete' },\n});\n\n/** All Kong Service Manager permissions */\nexport const kongPermissions = [\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n];\n"],"names":[],"mappings":";;AAGO,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,2BAA2B,gBAAA,CAAiB;AAAA,EACvD,IAAA,EAAM,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,mCAAmC,gBAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,oCAAoC,gBAAA,CAAiB;AAAA,EAChE,IAAA,EAAM,4BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,qCAAqC,gBAAA,CAAiB;AAAA,EACjE,IAAA,EAAM,6BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,iCAAiC,gBAAA,CAAiB;AAAA,EAC7D,IAAA,EAAM,yBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,kCAAkC,gBAAA,CAAiB;AAAA,EAC9D,IAAA,EAAM,0BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,mCAAmC,gBAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,eAAA,GAAkB;AAAA,EAC7B,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"permissions.esm.js","sources":["../src/permissions.ts"],"sourcesContent":["import { createPermission } from '@backstage/plugin-permission-common';\n\n/** Permission to read Kong service information */\nexport const kongServiceReadPermission = createPermission({\n name: 'kong.service.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read available and associated Kong plugins */\nexport const kongPluginsReadPermission = createPermission({\n name: 'kong.plugins.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to read Kong routes */\nexport const kongRoutesReadPermission = createPermission({\n name: 'kong.routes.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong service */\nexport const kongApplyPluginServicePermission = createPermission({\n name: 'kong.plugin.service.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong service */\nexport const kongUpdateServicePluginPermission = createPermission({\n name: 'kong.plugin.service.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong service */\nexport const kongDisableServicePluginPermission = createPermission({\n name: 'kong.plugin.service.disable',\n attributes: { action: 'delete' },\n});\n\n/** Permission to create a Kong route */\nexport const kongRouteCreatePermission = createPermission({\n name: 'kong.route.create',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a Kong route */\nexport const kongRouteUpdatePermission = createPermission({\n name: 'kong.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to delete a Kong route */\nexport const kongRouteDeletePermission = createPermission({\n name: 'kong.route.delete',\n attributes: { action: 'delete' },\n});\n\n/** Permission to list available Kong instances */\nexport const kongInstancesReadPermission = createPermission({\n name: 'kong.instances.read',\n attributes: { action: 'read' },\n});\n\n/** Permission to add a plugin to a Kong route */\nexport const kongApplyPluginRoutePermission = createPermission({\n name: 'kong.plugin.route.apply',\n attributes: { action: 'create' },\n});\n\n/** Permission to update a plugin on a Kong route */\nexport const kongUpdateRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.update',\n attributes: { action: 'update' },\n});\n\n/** Permission to disable/remove a plugin from a Kong route */\nexport const kongDisableRoutePluginPermission = createPermission({\n name: 'kong.plugin.route.disable',\n attributes: { action: 'delete' },\n});\n\n/** All Kong Service Manager permissions */\nexport const kongPermissions = [\n kongServiceReadPermission,\n kongPluginsReadPermission,\n kongRoutesReadPermission,\n kongApplyPluginServicePermission,\n kongUpdateServicePluginPermission,\n kongDisableServicePluginPermission,\n kongRouteCreatePermission,\n kongRouteUpdatePermission,\n kongRouteDeletePermission,\n kongApplyPluginRoutePermission,\n kongUpdateRoutePluginPermission,\n kongDisableRoutePluginPermission,\n kongInstancesReadPermission,\n];\n"],"names":[],"mappings":";;AAGO,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,2BAA2B,gBAAA,CAAiB;AAAA,EACvD,IAAA,EAAM,kBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,mCAAmC,gBAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,oCAAoC,gBAAA,CAAiB;AAAA,EAChE,IAAA,EAAM,4BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,qCAAqC,gBAAA,CAAiB;AAAA,EACjE,IAAA,EAAM,6BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,4BAA4B,gBAAA,CAAiB;AAAA,EACxD,IAAA,EAAM,mBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,8BAA8B,gBAAA,CAAiB;AAAA,EAC1D,IAAA,EAAM,qBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,MAAA;AACxB,CAAC;AAGM,MAAM,iCAAiC,gBAAA,CAAiB;AAAA,EAC7D,IAAA,EAAM,yBAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,kCAAkC,gBAAA,CAAiB;AAAA,EAC9D,IAAA,EAAM,0BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,mCAAmC,gBAAA,CAAiB;AAAA,EAC/D,IAAA,EAAM,2BAAA;AAAA,EACN,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AACxB,CAAC;AAGM,MAAM,eAAA,GAAkB;AAAA,EAC7B,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA,gCAAA;AAAA,EACA;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veecode-platform/backstage-plugin-kong-service-manager-backend-dynamic",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"pluginPackages": [
|
|
16
16
|
"@veecode-platform/backstage-plugin-kong-service-manager-backend"
|
|
17
17
|
],
|
|
18
|
-
"supported-versions": "1.48.
|
|
18
|
+
"supported-versions": "1.48.4"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@veecode-platform/backstage-plugin-kong-service-manager-common": "1.0.
|
|
21
|
+
"@veecode-platform/backstage-plugin-kong-service-manager-common": "1.0.2",
|
|
22
22
|
"express": "^4.14.0",
|
|
23
23
|
"express-promise-router": "^4.1.0",
|
|
24
24
|
"zod": "^3.22.4"
|