Update spec, fix by-refs issue, remove unused dependency.

Signed-off-by: Aramis Sennyey <sennyeya@amazon.com>
This commit is contained in:
Aramis Sennyey
2023-03-06 10:17:53 -05:00
committed by Fredrik Adelöw
parent 87f40d36f8
commit 08ea0c1861
9 changed files with 55 additions and 139 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/zsh
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged
+12 -12
View File
@@ -731,9 +731,18 @@ paths:
content:
application/json:
schema:
type: array
items:
type: string
type: object
required:
- entityRefs
properties:
entityRefs:
type: array
items:
type: string
fields:
type: array
items:
type: string
/entities/by-query:
get:
operationId: GetEntitiesByQuery
@@ -768,15 +777,6 @@ paths:
type: string
explode: false
style: form
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: string
/entity-facets:
get:
operationId: GetEntityFacets
+1 -2
View File
@@ -46,6 +46,7 @@
},
"dependencies": {
"@backstage/backend-common": "workspace:^",
"@backstage/backend-openapi-utils": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/catalog-client": "workspace:^",
"@backstage/catalog-model": "workspace:^",
@@ -54,7 +55,6 @@
"@backstage/integration": "workspace:^",
"@backstage/plugin-catalog-common": "workspace:^",
"@backstage/plugin-catalog-node": "workspace:^",
"@backstage/plugin-openapi-router": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/plugin-permission-node": "workspace:^",
"@backstage/plugin-scaffolder-common": "workspace:^",
@@ -71,7 +71,6 @@
"fs-extra": "10.1.0",
"git-url-parse": "^13.0.0",
"glob": "^7.1.6",
"js-yaml": "^4.1.0",
"knex": "^2.0.0",
"lodash": "^4.17.21",
"luxon": "^3.0.0",
@@ -934,9 +934,21 @@ export default {
content: {
'application/json': {
schema: {
type: 'array',
items: {
type: 'string',
type: 'object',
required: ['entityRefs'],
properties: {
entityRefs: {
type: 'array',
items: {
type: 'string',
},
},
fields: {
type: 'array',
items: {
type: 'string',
},
},
},
},
},
@@ -1003,19 +1015,6 @@ export default {
style: 'form',
},
],
requestBody: {
required: true,
content: {
'application/json': {
schema: {
type: 'array',
items: {
type: 'string',
},
},
},
},
},
},
},
'/entity-facets': {
+2 -2
View File
@@ -8,7 +8,7 @@ This package is meant to provide a typed Express router for an OpenAPI spec. Spe
### Configuration
In your plugin's `schema/openapi`,
In your plugin's `schema/openapi.ts`,
```ts
export default {
@@ -34,7 +34,7 @@ export function createRouter(){
1. OpenAPI definitions must be converted to Typescript files
From [#32063](https://github.com/microsoft/TypeScript/issues/32063), we cannot import JSON `as const`. If we could, this would allow us to force all specs to be JSON and then just import from a spec.
2. `as const` makes all fields `readonly`
To ensure a good DX of
To ensure a good DX of using a simple imported JSON spec, we want to remove any type issues between `readonly` arrays and mutable arrays. Typescript does not allow them to be compared, so converting all imports from the `openapi3-ts` library to `readonly` is important.
```tsx
...
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-openapi-router",
"description": "OpenAPI router with type completions.",
"name": "@backstage/backend-openapi-utils",
"description": "OpenAPI typescript support.",
"version": "0.0.0",
"main": "src/index.ts",
"types": "src/index.ts",
@@ -12,7 +12,7 @@
"types": "dist/index.d.ts"
},
"backstage": {
"role": "backend-plugin"
"role": "node-library"
},
"scripts": {
"start": "backstage-cli package start",
-33
View File
@@ -1,33 +0,0 @@
/*
* Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import yn from 'yn';
import { getRootLogger } from '@backstage/backend-common';
import { startStandaloneServer } from './standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 3004;
const enableCors = yn(process.env.PLUGIN_CORS, { default: false });
const logger = getRootLogger();
startStandaloneServer({ port, enableCors, logger }).catch(err => {
logger.error(err);
process.exit(1);
});
process.on('SIGINT', () => {
logger.info('CTRL+C pressed; exiting.');
process.exit(0);
});
@@ -1,48 +0,0 @@
/*
* Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Server } from 'http';
import { Logger } from 'winston';
import { createServiceBuilder } from '@backstage/backend-common';
import { createRouter } from './example';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'app-backend' });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
appPackageName: 'example-app',
});
const service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('', router);
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();
+21 -22
View File
@@ -3929,6 +3929,26 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/backend-openapi-utils@workspace:^, @backstage/backend-openapi-utils@workspace:plugins/openapi-router":
version: 0.0.0-use.local
resolution: "@backstage/backend-openapi-utils@workspace:plugins/openapi-router"
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/cli": "workspace:^"
"@types/express": ^4.17.6
"@types/express-serve-static-core": ^4.17.33
expect-type: ^0.15.0
express: ^4.17.1
express-promise-router: ^4.1.0
json-schema-to-ts: ^2.6.2
openapi-types: ^12.1.0
openapi3-ts: ^3.1.2
ts-node: ^10.9.1
winston: ^3.8.2
yn: ^4.0.0
languageName: unknown
linkType: soft
"@backstage/backend-plugin-api@workspace:^, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api":
version: 0.0.0-use.local
resolution: "@backstage/backend-plugin-api@workspace:packages/backend-plugin-api"
@@ -5691,6 +5711,7 @@ __metadata:
resolution: "@backstage/plugin-catalog-backend@workspace:plugins/catalog-backend"
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/backend-openapi-utils": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-test-utils": "workspace:^"
"@backstage/catalog-client": "workspace:^"
@@ -5701,7 +5722,6 @@ __metadata:
"@backstage/integration": "workspace:^"
"@backstage/plugin-catalog-common": "workspace:^"
"@backstage/plugin-catalog-node": "workspace:^"
"@backstage/plugin-openapi-router": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/plugin-permission-node": "workspace:^"
"@backstage/plugin-scaffolder-common": "workspace:^"
@@ -5725,7 +5745,6 @@ __metadata:
fs-extra: 10.1.0
git-url-parse: ^13.0.0
glob: ^7.1.6
js-yaml: ^4.1.0
knex: ^2.0.0
lodash: ^4.17.21
luxon: ^3.0.0
@@ -7794,26 +7813,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-openapi-router@workspace:^, @backstage/plugin-openapi-router@workspace:plugins/openapi-router":
version: 0.0.0-use.local
resolution: "@backstage/plugin-openapi-router@workspace:plugins/openapi-router"
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/cli": "workspace:^"
"@types/express": ^4.17.6
"@types/express-serve-static-core": ^4.17.33
expect-type: ^0.15.0
express: ^4.17.1
express-promise-router: ^4.1.0
json-schema-to-ts: ^2.6.2
openapi-types: ^12.1.0
openapi3-ts: ^3.1.2
ts-node: ^10.9.1
winston: ^3.8.2
yn: ^4.0.0
languageName: unknown
linkType: soft
"@backstage/plugin-org-react@workspace:plugins/org-react":
version: 0.0.0-use.local
resolution: "@backstage/plugin-org-react@workspace:plugins/org-react"