Removed standalone server and added dev index (#1180)

* Removed standalone server and added dev index

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Missing packages

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* dedupe

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

---------

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
This commit is contained in:
Andre Wanlin 2024-09-22 16:10:22 +02:00 committed by GitHub
parent 7c68b0002c
commit b8152b4e9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
73 changed files with 16276 additions and 3518 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2020 The Backstage Authors
* Copyright 2024 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.
@ -13,15 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createBackend } from '@backstage/backend-defaults';
import { test, expect } from '@playwright/test';
const backend = createBackend();
test('App should render the welcome page', async ({ page }) => {
await page.goto('/');
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
const enterButton = page.getByRole('button', { name: 'Enter' });
await expect(enterButton).toBeVisible();
await enterButton.click();
await expect(page.getByText('My Company Catalog')).toBeVisible();
});
backend.start();

View File

@ -43,8 +43,11 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/http-proxy-middleware": "^1.0.0",
"@types/supertest": "^6.0.0",
"supertest": "^7.0.0"

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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,61 +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 {
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { Server } from 'http';
import { createRouter } from './router';
import { extractAirbrakeConfig } from '../config';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'airbrake-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
const airbrakeConfig = extractAirbrakeConfig(config);
logger.debug('Starting application server...');
const router = await createRouter({
logger,
airbrakeConfig,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/api/airbrake', router);
if (options.enableCors) {
logger.info('CORS is enabled, limiting to localhost with port 3000');
service = service.enableCors({ origin: 'http://localhost:3000' });
} else {
logger.info('CORS is disabled, allowing all origins');
service = service.enableCors({ origin: '*' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -56,7 +56,10 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/supertest": "^6.0.0"
},
"files": [

View File

@ -1,33 +0,0 @@
/*
* Copyright 2022 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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,72 +0,0 @@
/*
* Copyright 2022 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 {
createServiceBuilder,
loadBackendConfig,
ServerTokenManager,
SingleHostDiscovery,
} from '@backstage/backend-common';
import { Server } from 'http';
import { AzureSitesApi } from '../api';
import { createRouter } from './router';
import { ServerPermissionClient } from '@backstage/plugin-permission-node';
import { CatalogClient } from '@backstage/catalog-client';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'azure-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
const discovery = SingleHostDiscovery.fromConfig(config);
const tokenManager = ServerTokenManager.fromConfig(config, {
logger,
});
const permissions = ServerPermissionClient.fromConfig(config, {
discovery,
tokenManager,
});
const catalogApi = new CatalogClient({ discoveryApi: discovery });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
permissions,
azureSitesApi: AzureSitesApi.fromConfig(config),
catalogApi,
discovery,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/azure-backend', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -52,7 +52,10 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/supertest": "^6.0.0",
"msw": "^1.0.0",
"supertest": "^7.0.0"

View File

@ -1,17 +0,0 @@
import { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,39 +0,0 @@
import {
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import { createRouter } from './router';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'azure-storage-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
config,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/azure-storage', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src/alpha'));
backend.start();

View File

@ -63,6 +63,8 @@
"devDependencies": {
"@backstage/backend-defaults": "^0.4.2",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0"
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,33 +0,0 @@
/*
* Copyright 2023 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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,77 +0,0 @@
/*
* Copyright 2023 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 {
createServiceBuilder,
DatabaseManager,
HostDiscovery,
loadBackendConfig,
} from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { DefaultIdentityClient } from '@backstage/plugin-auth-node';
import { Server } from 'http';
import { createRouter } from './router';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'entity-feedback-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
const discovery = HostDiscovery.fromConfig(config);
const manager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: { client: 'better-sqlite3', connection: ':memory:' },
},
}),
);
const database = manager.forPlugin('entity-feedback');
const identity = DefaultIdentityClient.create({
discovery,
issuer: await discovery.getExternalBaseUrl('auth'),
});
logger.debug('Starting application server...');
const router = await createRouter({
database,
discovery,
identity,
logger,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/entity-feedback', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

View File

@ -54,8 +54,11 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.2",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/lodash": "^4.14.151",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",

View File

@ -1,33 +0,0 @@
/*
* Copyright 2022 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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,67 +0,0 @@
/*
* Copyright 2022 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 { createServiceBuilder } from '@backstage/backend-common';
import { GetExploreToolsRequest } from '@backstage-community/plugin-explore-common';
import { Server } from 'http';
import { createRouter } from './router';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({
service: 'explore-backend',
});
logger.debug('Starting application server...');
const router = await createRouter({
logger,
toolProvider: {
getTools: async ({}: GetExploreToolsRequest) => {
return {
filter: undefined,
tools: [
{ title: 'Tool 1', url: 'https://example.com/tool1', image: '' },
{ title: 'Tool 2', url: 'https://example.com/tool2', image: '' },
{ title: 'Tool 3', url: 'https://example.com/tool2', image: '' },
],
};
},
},
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/explore-backend', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -62,7 +62,10 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.2",
"@backstage/cli": "0.26.11",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@janus-idp/cli": "1.13.1",
"@types/nodemailer": "6.4.15",
"@types/supertest": "2.0.16",

View File

@ -1,19 +0,0 @@
import { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,50 +0,0 @@
import { createServiceBuilder, HostDiscovery } from '@backstage/backend-common';
import {
AuthService,
DiscoveryService,
LoggerService,
} from '@backstage/backend-plugin-api';
import { mockServices } from '@backstage/backend-test-utils';
import { Config, ConfigReader } from '@backstage/config';
import { Server } from 'http';
import { createRouter } from './router';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const config: Config = new ConfigReader({});
const discovery: DiscoveryService = HostDiscovery.fromConfig(config);
const auth: AuthService = mockServices.auth({ pluginId: 'feedback' });
const logger: LoggerService = options.logger.child({
service: 'feedback-backend',
});
logger.debug('Starting application server...');
const router = await createRouter({
logger,
config: config,
discovery: discovery,
auth: auth,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/feedback', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -60,6 +60,8 @@
"@backstage/backend-defaults": "^0.4.3",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/jenkins": "^1.0.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0"

View File

@ -1,35 +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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
import { ConfigReader } from '@backstage/config';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
const enableCors = yn(process.env.PLUGIN_CORS, { default: false });
const logger = getRootLogger();
const config = new ConfigReader({});
startStandaloneServer({ config, port, enableCors, logger }).catch(err => {
logger.error(err);
process.exit(1);
});
process.on('SIGINT', () => {
logger.info('CTRL+C pressed; exiting.');
process.exit(0);
});

View File

@ -1,66 +0,0 @@
/*
* Copyright 2021 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 { createServiceBuilder, HostDiscovery } from '@backstage/backend-common';
import { Server } from 'http';
import { createRouter } from './router';
import { CompoundEntityRef } from '@backstage/catalog-model';
import { JenkinsInfo } from './jenkinsInfoProvider';
import { Config } from '@backstage/config';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
config: Config;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'jenkins-backend' });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
jenkinsInfoProvider: {
async getInstance(_: {
entityRef: CompoundEntityRef;
}): Promise<JenkinsInfo> {
return {
baseUrl: 'https://example.com/',
jobFullName: 'build-foo',
projectCountLimit: 60,
};
},
},
discovery: HostDiscovery.fromConfig(options.config),
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/jenkins', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

View File

@ -2750,6 +2750,8 @@ __metadata:
"@backstage/cli": ^0.27.0
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-backend": ^0.23.0
"@backstage/plugin-auth-backend-module-guest-provider": ^0.2.0
"@backstage/plugin-catalog-node": ^1.12.5
"@backstage/plugin-permission-common": ^0.8.1
"@backstage/plugin-permission-node": ^0.8.1
@ -2971,6 +2973,83 @@ __metadata:
languageName: node
linkType: hard
"@backstage/backend-common@npm:^0.25.0":
version: 0.25.0
resolution: "@backstage/backend-common@npm:0.25.0"
dependencies:
"@aws-sdk/abort-controller": ^3.347.0
"@aws-sdk/client-codecommit": ^3.350.0
"@aws-sdk/client-s3": ^3.350.0
"@aws-sdk/credential-providers": ^3.350.0
"@aws-sdk/types": ^3.347.0
"@backstage/backend-dev-utils": ^0.1.5
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/cli-common": ^0.1.14
"@backstage/config": ^1.2.0
"@backstage/config-loader": ^1.9.1
"@backstage/errors": ^1.2.4
"@backstage/integration": ^1.15.0
"@backstage/integration-aws-node": ^0.1.12
"@backstage/plugin-auth-node": ^0.5.2
"@backstage/types": ^1.1.1
"@google-cloud/storage": ^7.0.0
"@keyv/memcache": ^1.3.5
"@keyv/redis": ^2.5.3
"@kubernetes/client-node": 0.20.0
"@manypkg/get-packages": ^1.1.3
"@octokit/rest": ^19.0.3
"@types/cors": ^2.8.6
"@types/dockerode": ^3.3.0
"@types/express": ^4.17.6
"@types/luxon": ^3.0.0
"@types/webpack-env": ^1.15.2
archiver: ^7.0.0
base64-stream: ^1.0.0
compression: ^1.7.4
concat-stream: ^2.0.0
cors: ^2.8.5
dockerode: ^4.0.0
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
helmet: ^6.0.0
isomorphic-git: ^1.23.0
jose: ^5.0.0
keyv: ^4.5.2
knex: ^3.0.0
lodash: ^4.17.21
logform: ^2.3.2
luxon: ^3.0.0
minimatch: ^9.0.0
minimist: ^1.2.5
morgan: ^1.10.0
mysql2: ^3.0.0
node-fetch: ^2.7.0
node-forge: ^1.3.1
p-limit: ^3.1.0
path-to-regexp: ^8.0.0
pg: ^8.11.3
pg-format: ^1.0.4
raw-body: ^2.4.1
selfsigned: ^2.0.0
stoppable: ^1.1.0
tar: ^6.1.12
triple-beam: ^1.4.1
uuid: ^9.0.0
winston: ^3.2.1
winston-transport: ^4.5.0
yauzl: ^3.0.0
yn: ^4.0.0
peerDependencies:
pg-connection-string: ^2.3.0
peerDependenciesMeta:
pg-connection-string:
optional: true
checksum: 34d2b92b5fd7f6d8f25975d121634079586d022665a51b676ba47053050e0f22556f80d59a75a10e0a8f1803a718448b7aed4bd1dcd6f1d348785c97cf5a8c9d
languageName: node
linkType: hard
"@backstage/backend-defaults@npm:^0.4.3, @backstage/backend-defaults@npm:^0.4.4":
version: 0.4.4
resolution: "@backstage/backend-defaults@npm:0.4.4"
@ -3093,6 +3172,25 @@ __metadata:
languageName: node
linkType: hard
"@backstage/backend-plugin-api@npm:^1.0.0":
version: 1.0.0
resolution: "@backstage/backend-plugin-api@npm:1.0.0"
dependencies:
"@backstage/cli-common": ^0.1.14
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
"@backstage/plugin-permission-common": ^0.8.1
"@backstage/types": ^1.1.1
"@types/express": ^4.17.6
"@types/luxon": ^3.0.0
express: ^4.17.1
knex: ^3.0.0
luxon: ^3.0.0
checksum: b18b93fb631a81826ef9049567c5a151285d643aea820954f03e3a293d75f00ae679b2d3054fab2cf9dff476a65fad5b8841ca608b2f182f394b22dca026664a
languageName: node
linkType: hard
"@backstage/backend-tasks@npm:^0.6.0":
version: 0.6.1
resolution: "@backstage/backend-tasks@npm:0.6.1"
@ -3149,27 +3247,27 @@ __metadata:
languageName: node
linkType: hard
"@backstage/catalog-client@npm:^1.6.6":
version: 1.6.6
resolution: "@backstage/catalog-client@npm:1.6.6"
"@backstage/catalog-client@npm:^1.6.6, @backstage/catalog-client@npm:^1.7.0":
version: 1.7.0
resolution: "@backstage/catalog-client@npm:1.7.0"
dependencies:
"@backstage/catalog-model": ^1.6.0
"@backstage/catalog-model": ^1.7.0
"@backstage/errors": ^1.2.4
cross-fetch: ^4.0.0
uri-template: ^2.0.0
checksum: 10a859979a6ec3d9bcca519ace01ca371517e56bd54a90e0d667b4ef90bee54b09495238974b4040d7dc75f8cacf0d212900b40fe6738d484ff57a739e3eec4b
checksum: 66a0570c57281fbf7b59786ebf2dd97efbb5c7c7393025e14a605d38f1bf2317974c319da138146e21d31ac83c3214223631211ebbee36fc96c84bd803acd913
languageName: node
linkType: hard
"@backstage/catalog-model@npm:^1.5.0, @backstage/catalog-model@npm:^1.6.0":
version: 1.6.0
resolution: "@backstage/catalog-model@npm:1.6.0"
"@backstage/catalog-model@npm:^1.5.0, @backstage/catalog-model@npm:^1.6.0, @backstage/catalog-model@npm:^1.7.0":
version: 1.7.0
resolution: "@backstage/catalog-model@npm:1.7.0"
dependencies:
"@backstage/errors": ^1.2.4
"@backstage/types": ^1.1.1
ajv: ^8.10.0
lodash: ^4.17.21
checksum: b3bac3578a43b4d3f9e2fcd90396b5043f8c1e46f5308c5204b7973c79e76e465b3804edc985355cb4b3f669d065e1522b25bc6ee38567b5c74341b2d115ecf0
checksum: 6ff537e9e6064d35fa4a173a1c96f94e904489494a67a136e2dd0a743f9e3f4fd8a1f7a661fe8495dfbb642aabcc8fbf1746a300ad496b6e4a5d02f4db00f914
languageName: node
linkType: hard
@ -3332,9 +3430,9 @@ __metadata:
languageName: node
linkType: hard
"@backstage/config-loader@npm:^1.9.0":
version: 1.9.0
resolution: "@backstage/config-loader@npm:1.9.0"
"@backstage/config-loader@npm:^1.9.0, @backstage/config-loader@npm:^1.9.1":
version: 1.9.1
resolution: "@backstage/config-loader@npm:1.9.1"
dependencies:
"@backstage/cli-common": ^0.1.14
"@backstage/config": ^1.2.0
@ -3350,9 +3448,9 @@ __metadata:
lodash: ^4.17.21
minimist: ^1.2.5
node-fetch: ^2.7.0
typescript-json-schema: ^0.63.0
typescript-json-schema: ^0.65.0
yaml: ^2.0.0
checksum: a7881957eed96b2fd707415914800fc72de8e0a067259d0e25ae9d89008abc405c8c9bece528a07e1c33ac18efd919f4bf10d7624b0a454c8a491785a539bc7f
checksum: e13ab3cab7a443aa94a5861bf9fe19208bd85a4087f495d6e51d007ff25fcf2c56c26c3682c476422cf407be97dfa6fbe5817595f1f5523a307eae1c23fcc489
languageName: node
linkType: hard
@ -3647,9 +3745,9 @@ __metadata:
languageName: node
linkType: hard
"@backstage/integration@npm:^1.13.0, @backstage/integration@npm:^1.14.0":
version: 1.14.0
resolution: "@backstage/integration@npm:1.14.0"
"@backstage/integration@npm:^1.13.0, @backstage/integration@npm:^1.14.0, @backstage/integration@npm:^1.15.0":
version: 1.15.0
resolution: "@backstage/integration@npm:1.15.0"
dependencies:
"@azure/identity": ^4.0.0
"@backstage/config": ^1.2.0
@ -3660,7 +3758,7 @@ __metadata:
git-url-parse: ^14.0.0
lodash: ^4.17.21
luxon: ^3.0.0
checksum: 3dc2272eda0205e880469aa2a68f390ba9f7a36b5ca41bc2bcb693c46fa7f99e057748c9aab1f88637dda3d8e2dec6b82ffab2aea6d3f12781c563502f0ed4d1
checksum: a2c5b51b1403341f56fe91bd53a1105875855642927b95277c3e8ea29d604b718c39984fd2b8cd298d6206d1f23718da10dbbb53f4ec6eb74b296e6621fc4b7e
languageName: node
linkType: hard
@ -3749,6 +3847,32 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-atlassian-provider@npm:^0.3.0":
version: 0.3.0
resolution: "@backstage/plugin-auth-backend-module-atlassian-provider@npm:0.3.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
passport: ^0.7.0
passport-atlassian-oauth2: ^2.1.0
checksum: af0f65c9bd1243046267832e95ed03e4bf7fed911872868bb9a517d9751ba2d959ca52808014124fe9c711d2d2f04820728919dc6a253d302c399798a944b2bb
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-auth0-provider@npm:^0.1.0":
version: 0.1.0
resolution: "@backstage/plugin-auth-backend-module-auth0-provider@npm:0.1.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.17.1
passport-auth0: ^1.4.3
passport-oauth2: ^1.6.1
checksum: e900ff8d0550b228c229902a6f04ab53a40273341d3c434df2b43f11f9f8e085514fa3b066619c7609c6310c7772a5c9fa14c7d71d9e772622f8189b94d33f16
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-aws-alb-provider@npm:^0.1.17":
version: 0.1.17
resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@npm:0.1.17"
@ -3765,6 +3889,22 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-aws-alb-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@npm:0.2.0"
dependencies:
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-backend": ^0.23.0
"@backstage/plugin-auth-node": ^0.5.2
jose: ^5.0.0
node-cache: ^5.1.2
node-fetch: ^2.7.0
checksum: b50bd79a59b4b3dc3cc68d5c4dc0a2e3094d09e97b754c63d6ea80b9d95097e02c989a6620c96b7d24d115c015af1af414d59a93300333ff233962974f698728
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:^0.1.7":
version: 0.1.7
resolution: "@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:0.1.7"
@ -3781,6 +3921,22 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/catalog-model": ^1.7.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
"@types/passport": ^1.0.16
express: ^4.19.2
jose: ^5.0.0
passport: ^0.7.0
checksum: 554ef96a16c1a06d1b49ed9dbed72e855b2b7f24d3b1836fd489d41974e07774ab41dae0598d0e8299b539c6457d5d1d908f6dbd49f30b30ee4fda9424b69986
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-bitbucket-provider@npm:^0.1.7":
version: 0.1.7
resolution: "@backstage/plugin-auth-backend-module-bitbucket-provider@npm:0.1.7"
@ -3794,6 +3950,32 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-bitbucket-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-bitbucket-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
passport: ^0.7.0
passport-bitbucket-oauth2: ^0.1.2
checksum: 30917e8ded0f42549fea5d20a68eef5cd8282450b61d3261a38c77e63df90ea694b45b5780954624e54321d8fa5cddbef9bfb92f8897421ddacafbd21e073344
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-bitbucket-server-provider@npm:^0.1.0":
version: 0.1.0
resolution: "@backstage/plugin-auth-backend-module-bitbucket-server-provider@npm:0.1.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
node-fetch: ^2.7.0
passport: ^0.7.0
passport-oauth2: ^1.6.1
checksum: c5307c68c29a9b476d73d546c9f2969b2baa543ae3afceafcd7569b28eeff4b7964f2636dc52c4271f09d2dbd97ba132120b61d5340736045e8aa56fb3287b20
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:^0.2.1":
version: 0.2.1
resolution: "@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:0.2.1"
@ -3809,6 +3991,21 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:^0.3.0":
version: 0.3.0
resolution: "@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:0.3.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
jose: ^5.0.0
node-fetch: ^2.7.0
checksum: 9ecc5651255a4a30b2227f1d93a18e0485f9eb1d3e3f1503b3c39580675ba48ef1f740a0ed84d94e74a114a99b74c2bb8c4318960dd843c040936a0f31cbded2
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:^0.2.19":
version: 0.2.19
resolution: "@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:0.2.19"
@ -3822,6 +4019,19 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:^0.3.0":
version: 0.3.0
resolution: "@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:0.3.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
"@backstage/types": ^1.1.1
google-auth-library: ^9.0.0
checksum: 2cacd07b4c2354b13165da64690b9c161e1609214822050d94cb264bec438c5ebf2ab74a6e3df31bcc155158c6541843b552075c0aefc8354321d4831b3a3a55
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-github-provider@npm:^0.1.20, @backstage/plugin-auth-backend-module-github-provider@npm:^0.1.21":
version: 0.1.21
resolution: "@backstage/plugin-auth-backend-module-github-provider@npm:0.1.21"
@ -3833,6 +4043,17 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-github-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-github-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
passport-github2: ^0.1.12
checksum: f28ca1ecb32aa5c1042435cb73d73849bac5aef3c02e18242ef6c5844117acf14f1eee905d94c821853a0733d3cee3a9ac457f1b9d0870f3c24b77b78dcc2ca6
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-gitlab-provider@npm:^0.1.21":
version: 0.1.21
resolution: "@backstage/plugin-auth-backend-module-gitlab-provider@npm:0.1.21"
@ -3846,6 +4067,19 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-gitlab-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-gitlab-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
passport: ^0.7.0
passport-gitlab2: ^5.0.0
checksum: 669c0cf8f9ac0a9ccabe15aab27d2b766d9df26cc05c7db1c39db96c967e034482e3bb955004f93f89ffd1bbf0e00becd408b6a4d470d8897c41ffa8b014be51
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-google-provider@npm:^0.1.21":
version: 0.1.21
resolution: "@backstage/plugin-auth-backend-module-google-provider@npm:0.1.21"
@ -3858,6 +4092,18 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-google-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-google-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
google-auth-library: ^9.0.0
passport-google-oauth20: ^2.0.0
checksum: 02b8a6e67faca9c59363cbeef58fa6922076b9a7c65838a43d125d239d821444444ef8694ffcf71b570b651c36127f7a623bebbbc13624b85ea70614e9b56f16
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-guest-provider@npm:^0.1.9":
version: 0.1.10
resolution: "@backstage/plugin-auth-backend-module-guest-provider@npm:0.1.10"
@ -3872,6 +4118,20 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-guest-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-guest-provider@npm:0.2.0"
dependencies:
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/catalog-model": ^1.7.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
passport-oauth2: ^1.7.0
checksum: f06aee6fb91b7702bd7a846f8cffb1b7b664ec6b8903bc42ed9fc963e5f700f94897d9706f45fbe6a2788a3371432a7025b38759f0a0d3f4b07b3389cc852844
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-microsoft-provider@npm:^0.1.19":
version: 0.1.19
resolution: "@backstage/plugin-auth-backend-module-microsoft-provider@npm:0.1.19"
@ -3886,6 +4146,20 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-microsoft-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-microsoft-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
jose: ^5.0.0
node-fetch: ^2.7.0
passport-microsoft: ^1.0.0
checksum: 2867a0b50ba4d5b3ba4a91e00778d4607c8dc4793ae1d0434291e3ba2e31000126e64ed29dc0211f1d34199639a95b9a25bed5890fbe388e4d577d13b6234ed3
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oauth2-provider@npm:^0.2.5":
version: 0.2.5
resolution: "@backstage/plugin-auth-backend-module-oauth2-provider@npm:0.2.5"
@ -3898,6 +4172,18 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oauth2-provider@npm:^0.3.0":
version: 0.3.0
resolution: "@backstage/plugin-auth-backend-module-oauth2-provider@npm:0.3.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
passport: ^0.7.0
passport-oauth2: ^1.6.1
checksum: 71f838f3fc1b94d0760ee5c5ce5d04e765c4e7f9d54f85f53fb208f3281cdf7ca85b7dea4098694ff688a0f9f9d044f888aaff0120f6e8287dc95279c7293e24
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:^0.1.17":
version: 0.1.17
resolution: "@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:0.1.17"
@ -3910,6 +4196,18 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.2
jose: ^5.0.0
checksum: c5d538abedc6d5aa9211bc4fc5b9bee24680622b10cbbb54d9cd461572ef96b4366ae77a0e94bfcaca0258014d78a36799d13074c6d6dc8816412a0acb6b07c8
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oidc-provider@npm:^0.2.6":
version: 0.2.6
resolution: "@backstage/plugin-auth-backend-module-oidc-provider@npm:0.2.6"
@ -3925,6 +4223,21 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-oidc-provider@npm:^0.3.0":
version: 0.3.0
resolution: "@backstage/plugin-auth-backend-module-oidc-provider@npm:0.3.0"
dependencies:
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-backend": ^0.23.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
openid-client: ^5.5.0
passport: ^0.7.0
checksum: ac5e01b4ba3e8f6da1a39670c51c0d14684daf0fc4ea2fb2f387256b15e01ae5d119fa9d4ca7890897f154f0cc9ed0c607b90be40ed1399826446922f5f3c4fd
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-okta-provider@npm:^0.0.17":
version: 0.0.17
resolution: "@backstage/plugin-auth-backend-module-okta-provider@npm:0.0.17"
@ -3938,6 +4251,19 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-okta-provider@npm:^0.1.0":
version: 0.1.0
resolution: "@backstage/plugin-auth-backend-module-okta-provider@npm:0.1.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
"@davidzemon/passport-okta-oauth": ^0.0.5
express: ^4.18.2
passport: ^0.7.0
checksum: 0f1540129f8cb716fbe802ed5b392653f1a01d385a2497a99ca089447855b97688e6a780b06e18b33399852bf57d8077036de92d5b82817e170633ef90ece301
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-onelogin-provider@npm:^0.1.5":
version: 0.1.5
resolution: "@backstage/plugin-auth-backend-module-onelogin-provider@npm:0.1.5"
@ -3951,6 +4277,19 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-backend-module-onelogin-provider@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/plugin-auth-backend-module-onelogin-provider@npm:0.2.0"
dependencies:
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/plugin-auth-node": ^0.5.2
express: ^4.18.2
passport: ^0.7.0
passport-onelogin-oauth: ^0.0.1
checksum: 23126c7039a1d0ad7cb428c61bd47b6d957056df46ab407576321516a21ab9775abbd1f7edabbe247f46e46b16d367b7ba3ac74f84f467fcbba0a30c23e35dcf
languageName: node
linkType: hard
"@backstage/plugin-auth-backend@npm:^0.22.10, @backstage/plugin-auth-backend@npm:^0.22.12":
version: 0.22.12
resolution: "@backstage/plugin-auth-backend@npm:0.22.12"
@ -4015,14 +4354,80 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-auth-node@npm:^0.5.0, @backstage/plugin-auth-node@npm:^0.5.1":
version: 0.5.1
resolution: "@backstage/plugin-auth-node@npm:0.5.1"
"@backstage/plugin-auth-backend@npm:^0.23.0":
version: 0.23.0
resolution: "@backstage/plugin-auth-backend@npm:0.23.0"
dependencies:
"@backstage/backend-common": ^0.24.1
"@backstage/backend-plugin-api": ^0.8.1
"@backstage/catalog-client": ^1.6.6
"@backstage/catalog-model": ^1.6.0
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/catalog-client": ^1.7.0
"@backstage/catalog-model": ^1.7.0
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-backend-module-atlassian-provider": ^0.3.0
"@backstage/plugin-auth-backend-module-auth0-provider": ^0.1.0
"@backstage/plugin-auth-backend-module-aws-alb-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-azure-easyauth-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-bitbucket-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-bitbucket-server-provider": ^0.1.0
"@backstage/plugin-auth-backend-module-cloudflare-access-provider": ^0.3.0
"@backstage/plugin-auth-backend-module-gcp-iap-provider": ^0.3.0
"@backstage/plugin-auth-backend-module-github-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-gitlab-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-google-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-microsoft-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-oauth2-provider": ^0.3.0
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": ^0.2.0
"@backstage/plugin-auth-backend-module-oidc-provider": ^0.3.0
"@backstage/plugin-auth-backend-module-okta-provider": ^0.1.0
"@backstage/plugin-auth-backend-module-onelogin-provider": ^0.2.0
"@backstage/plugin-auth-node": ^0.5.2
"@backstage/plugin-catalog-node": ^1.13.0
"@backstage/types": ^1.1.1
"@google-cloud/firestore": ^7.0.0
"@node-saml/passport-saml": ^5.0.0
"@types/express": ^4.17.6
"@types/passport": ^1.0.3
compression: ^1.7.4
connect-session-knex: ^4.0.0
cookie-parser: ^1.4.5
cors: ^2.8.5
express: ^4.17.1
express-promise-router: ^4.1.0
express-session: ^1.17.1
fs-extra: ^11.2.0
google-auth-library: ^9.0.0
jose: ^5.0.0
knex: ^3.0.0
lodash: ^4.17.21
luxon: ^3.0.0
minimatch: ^9.0.0
morgan: ^1.10.0
node-cache: ^5.1.2
node-fetch: ^2.7.0
openid-client: ^5.2.1
passport: ^0.7.0
passport-auth0: ^1.4.3
passport-github2: ^0.1.12
passport-google-oauth20: ^2.0.0
passport-microsoft: ^1.0.0
passport-oauth2: ^1.6.1
passport-onelogin-oauth: ^0.0.1
uuid: ^9.0.0
winston: ^3.2.1
yn: ^4.0.0
checksum: 25bf817b7fdef6a994d36e7c647c3779ec84fb8e0b70afb8f18e02010d22335c1df7e469130feed6be9c7b6c53e2ad2095403f1a87ca6c1401469d510067a75e
languageName: node
linkType: hard
"@backstage/plugin-auth-node@npm:^0.5.0, @backstage/plugin-auth-node@npm:^0.5.1, @backstage/plugin-auth-node@npm:^0.5.2":
version: 0.5.2
resolution: "@backstage/plugin-auth-node@npm:0.5.2"
dependencies:
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/catalog-client": ^1.7.0
"@backstage/catalog-model": ^1.7.0
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/types": ^1.1.1
@ -4036,7 +4441,7 @@ __metadata:
winston: ^3.2.1
zod: ^3.22.4
zod-to-json-schema: ^3.21.4
checksum: 42b991b81569dd0258eeac949abf887e63202da0d2374e161d5fb9de96cf4a482fb0db64fd612d401e0088e73360a23a1023923805fd1b18cddfd9ab3ff801e8
checksum: 4a461ac73368f673bbe4d11a8f74807429f58e5295809e80d63365df57238735f0df8c9a7b33b096b371ddddbc79f02b879c7b42600dc1a22fe85f166095ccea
languageName: node
linkType: hard
@ -4122,14 +4527,14 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-catalog-common@npm:^1.0.26":
version: 1.0.26
resolution: "@backstage/plugin-catalog-common@npm:1.0.26"
"@backstage/plugin-catalog-common@npm:^1.0.26, @backstage/plugin-catalog-common@npm:^1.1.0":
version: 1.1.0
resolution: "@backstage/plugin-catalog-common@npm:1.1.0"
dependencies:
"@backstage/catalog-model": ^1.6.0
"@backstage/catalog-model": ^1.7.0
"@backstage/plugin-permission-common": ^0.8.1
"@backstage/plugin-search-common": ^1.2.14
checksum: 43249394ecd9b67153cda485f33368440f62df3d894d0aa5ee51c35d9134d6a20a9c5ee871f384dbcf21a277083e26b2e7053fb9bc582ec34f34559277e1ac8e
checksum: 291a589cfa6d6d06dbb01d6343c005f4dad1d837b3f2d56ce7d0f1cb89b90c92af4e1dd17931cdcd2b6666b11eba0f8726f9fe02bca2340997002b2182cdf40b
languageName: node
linkType: hard
@ -4197,19 +4602,19 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-catalog-node@npm:^1.12.5, @backstage/plugin-catalog-node@npm:^1.12.6":
version: 1.12.6
resolution: "@backstage/plugin-catalog-node@npm:1.12.6"
"@backstage/plugin-catalog-node@npm:^1.12.5, @backstage/plugin-catalog-node@npm:^1.12.6, @backstage/plugin-catalog-node@npm:^1.13.0":
version: 1.13.0
resolution: "@backstage/plugin-catalog-node@npm:1.13.0"
dependencies:
"@backstage/backend-plugin-api": ^0.8.1
"@backstage/catalog-client": ^1.6.6
"@backstage/catalog-model": ^1.6.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/catalog-client": ^1.7.0
"@backstage/catalog-model": ^1.7.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-catalog-common": ^1.0.26
"@backstage/plugin-catalog-common": ^1.1.0
"@backstage/plugin-permission-common": ^0.8.1
"@backstage/plugin-permission-node": ^0.8.2
"@backstage/plugin-permission-node": ^0.8.3
"@backstage/types": ^1.1.1
checksum: cd3fb50a2f8e54f7f98a936d538e383fb750a65b8167647b184efdbd0bc445d6b918c0772a19829a9486c34cc6d728970dd74450ce9b3ea4963a7274b77e936c
checksum: b837859618fa55a5d95a3aa6f1872b3973b5b44826f13469713b585d1cbfe49a77014a5fd4f2a30383b7449cb9989368bd152d9f9a6d3bd0ae2dd22dacef5ffa
languageName: node
linkType: hard
@ -4376,22 +4781,22 @@ __metadata:
languageName: node
linkType: hard
"@backstage/plugin-permission-node@npm:^0.8.1, @backstage/plugin-permission-node@npm:^0.8.2":
version: 0.8.2
resolution: "@backstage/plugin-permission-node@npm:0.8.2"
"@backstage/plugin-permission-node@npm:^0.8.1, @backstage/plugin-permission-node@npm:^0.8.2, @backstage/plugin-permission-node@npm:^0.8.3":
version: 0.8.3
resolution: "@backstage/plugin-permission-node@npm:0.8.3"
dependencies:
"@backstage/backend-common": ^0.24.1
"@backstage/backend-plugin-api": ^0.8.1
"@backstage/backend-common": ^0.25.0
"@backstage/backend-plugin-api": ^1.0.0
"@backstage/config": ^1.2.0
"@backstage/errors": ^1.2.4
"@backstage/plugin-auth-node": ^0.5.1
"@backstage/plugin-auth-node": ^0.5.2
"@backstage/plugin-permission-common": ^0.8.1
"@types/express": ^4.17.6
express: ^4.17.1
express-promise-router: ^4.1.0
zod: ^3.22.4
zod-to-json-schema: ^3.20.4
checksum: 3af9ea151e6fa2bcbe4c48a1062191118fa8efd31bf1f40c45165e48b165facc0308abd63365d32e1908cd91632c8a97bd5ed844e322da8bd534adde7c50779b
checksum: 9248959eca1d99111aecfc9a1bce6f47ace11f206f2abbdac30047ed8241d7f8f01d289fe3fdf7ef5dbb6dd81c73d967f56361ab74163321fc50ee234ed06201
languageName: node
linkType: hard
@ -7984,6 +8389,26 @@ __metadata:
languageName: node
linkType: hard
"@node-saml/node-saml@npm:^5.0.0":
version: 5.0.0
resolution: "@node-saml/node-saml@npm:5.0.0"
dependencies:
"@types/debug": ^4.1.12
"@types/qs": ^6.9.11
"@types/xml-encryption": ^1.2.4
"@types/xml2js": ^0.4.14
"@xmldom/is-dom-node": ^1.0.1
"@xmldom/xmldom": ^0.8.10
debug: ^4.3.4
xml-crypto: ^6.0.0
xml-encryption: ^3.0.2
xml2js: ^0.6.2
xmlbuilder: ^15.1.1
xpath: ^0.0.34
checksum: 6a9ff9d922befc8ccb3338fe8f989eba66d3f781a3d1f39c4bd1d5c58fc1acd74ae05d94a08ef9c4ff1990ad38d0ca97135de52bbfe79196594e76f75e7b7e13
languageName: node
linkType: hard
"@node-saml/passport-saml@npm:^4.0.4":
version: 4.0.4
resolution: "@node-saml/passport-saml@npm:4.0.4"
@ -7998,6 +8423,20 @@ __metadata:
languageName: node
linkType: hard
"@node-saml/passport-saml@npm:^5.0.0":
version: 5.0.0
resolution: "@node-saml/passport-saml@npm:5.0.0"
dependencies:
"@node-saml/node-saml": ^5.0.0
"@types/express": ^4.17.21
"@types/passport": ^1.0.16
"@types/passport-strategy": ^0.2.38
passport: ^0.7.0
passport-strategy: ^1.0.0
checksum: f5a5e3f731decd7cc3fa5effdd462e3265fa9da4455014041c62e678212b86200ec07e34083f6107c2db79157334e8f6af8658220bb865ad579317ca9465b05b
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@ -12028,7 +12467,7 @@ __metadata:
languageName: node
linkType: hard
"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.7":
"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.12, @types/debug@npm:^4.1.7":
version: 4.1.12
resolution: "@types/debug@npm:4.1.12"
dependencies:
@ -12395,19 +12834,12 @@ __metadata:
languageName: node
linkType: hard
"@types/node@npm:^16.9.2":
version: 16.18.106
resolution: "@types/node@npm:16.18.106"
checksum: 1ee3188754f4480c941ac97b3dee53534ae1d349eb171accf7c4b7a10dfe767979e354aea6f9803e6ba9f3765d7635f73c39c7ac2faced960a7d426fa49c9ae9
languageName: node
linkType: hard
"@types/node@npm:^18.11.18":
version: 18.19.46
resolution: "@types/node@npm:18.19.46"
"@types/node@npm:^18.11.18, @types/node@npm:^18.11.9":
version: 18.19.50
resolution: "@types/node@npm:18.19.50"
dependencies:
undici-types: ~5.26.4
checksum: 04ac7f62e937dcbe87ac41bf0c6d553d88e62e08b0e9ba80ca20d41f502b71bcfafc540b12ef508ee9a311bdc0288ec1f0eb0cdf2f6d2598883eac6f36bdf2f0
checksum: 73bdd2b46fb96816a1f7309e1b609f0832a29739c87df7daa729ff497160be143e02cf18486a0112e1981b092358aed3ca0716b532aff93c7e05f7dbb4f7586a
languageName: node
linkType: hard
@ -12447,7 +12879,7 @@ __metadata:
languageName: node
linkType: hard
"@types/passport-strategy@npm:^0.2.35":
"@types/passport-strategy@npm:^0.2.35, @types/passport-strategy@npm:^0.2.38":
version: 0.2.38
resolution: "@types/passport-strategy@npm:0.2.38"
dependencies:
@ -12482,10 +12914,10 @@ __metadata:
languageName: node
linkType: hard
"@types/qs@npm:*":
version: 6.9.15
resolution: "@types/qs@npm:6.9.15"
checksum: 97d8208c2b82013b618e7a9fc14df6bd40a73e1385ac479b6896bafc7949a46201c15f42afd06e86a05e914f146f495f606b6fb65610cc60cf2e0ff743ec38a2
"@types/qs@npm:*, @types/qs@npm:^6.9.11":
version: 6.9.16
resolution: "@types/qs@npm:6.9.16"
checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c
languageName: node
linkType: hard
@ -12810,7 +13242,7 @@ __metadata:
languageName: node
linkType: hard
"@types/xml-encryption@npm:^1.2.1":
"@types/xml-encryption@npm:^1.2.1, @types/xml-encryption@npm:^1.2.4":
version: 1.2.4
resolution: "@types/xml-encryption@npm:1.2.4"
dependencies:
@ -12819,7 +13251,7 @@ __metadata:
languageName: node
linkType: hard
"@types/xml2js@npm:^0.4.11":
"@types/xml2js@npm:^0.4.11, @types/xml2js@npm:^0.4.14":
version: 0.4.14
resolution: "@types/xml2js@npm:0.4.14"
dependencies:
@ -13290,7 +13722,14 @@ __metadata:
languageName: node
linkType: hard
"@xmldom/xmldom@npm:^0.8.3, @xmldom/xmldom@npm:^0.8.5, @xmldom/xmldom@npm:^0.8.6, @xmldom/xmldom@npm:^0.8.8":
"@xmldom/is-dom-node@npm:^1.0.1":
version: 1.0.1
resolution: "@xmldom/is-dom-node@npm:1.0.1"
checksum: 24a412fbd996b4de757c3905f4b4aad28578aaf6687fd4fc986f339d476dcf5153c50a4f408099c2a894961a1517c927163ec37a1ade9f73b5c0ad478b34190e
languageName: node
linkType: hard
"@xmldom/xmldom@npm:^0.8.10, @xmldom/xmldom@npm:^0.8.3, @xmldom/xmldom@npm:^0.8.5, @xmldom/xmldom@npm:^0.8.6, @xmldom/xmldom@npm:^0.8.8":
version: 0.8.10
resolution: "@xmldom/xmldom@npm:0.8.10"
checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0
@ -13897,7 +14336,7 @@ __metadata:
languageName: node
linkType: hard
"archiver@npm:^7.0.1":
"archiver@npm:^7.0.0, archiver@npm:^7.0.1":
version: 7.0.1
resolution: "archiver@npm:7.0.1"
dependencies:
@ -26258,6 +26697,13 @@ __metadata:
languageName: node
linkType: hard
"path-to-regexp@npm:^8.0.0":
version: 8.1.0
resolution: "path-to-regexp@npm:8.1.0"
checksum: 982b784f8dff704c04c79dc3e26d51d2dba340e6bd513a8bdc48559a8543d730547d9d2355122166171eb509236e7524802ed643f8a77d527e12c69ffc74f97f
languageName: node
linkType: hard
"path-type@npm:^4.0.0":
version: 4.0.0
resolution: "path-type@npm:4.0.0"
@ -31428,21 +31874,21 @@ __metadata:
languageName: node
linkType: hard
"typescript-json-schema@npm:^0.63.0":
version: 0.63.0
resolution: "typescript-json-schema@npm:0.63.0"
"typescript-json-schema@npm:^0.65.0":
version: 0.65.1
resolution: "typescript-json-schema@npm:0.65.1"
dependencies:
"@types/json-schema": ^7.0.9
"@types/node": ^16.9.2
"@types/node": ^18.11.9
glob: ^7.1.7
path-equal: ^1.2.5
safe-stable-stringify: ^2.2.0
ts-node: ^10.9.1
typescript: ~5.1.0
typescript: ~5.5.0
yargs: ^17.1.1
bin:
typescript-json-schema: bin/typescript-json-schema
checksum: 619ab7aece08e140ba9542c6378c335751dbff3994a23343d0af67786a0c1e682d532a436c1674ddb10bca3f34972ecac7ba529b66d0e9b3e00ca81defb3aa77
checksum: f67af357d3ba7f7953124437f7d36e15ad4171c35b2db945a4b1b3c77114f35328825e9109a3b71150cfc2a1e942da589d956a065eb31eb1dfca6c67fa54e30f
languageName: node
linkType: hard
@ -31456,16 +31902,6 @@ __metadata:
languageName: node
linkType: hard
"typescript@npm:~5.1.0":
version: 5.1.6
resolution: "typescript@npm:5.1.6"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350
languageName: node
linkType: hard
"typescript@npm:~5.3.0":
version: 5.3.3
resolution: "typescript@npm:5.3.3"
@ -31476,6 +31912,16 @@ __metadata:
languageName: node
linkType: hard
"typescript@npm:~5.5.0":
version: 5.5.4
resolution: "typescript@npm:5.5.4"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: b309040f3a1cd91c68a5a58af6b9fdd4e849b8c42d837b2c2e73f9a4f96a98c4f1ed398a9aab576ee0a4748f5690cf594e6b99dbe61de7839da748c41e6d6ca8
languageName: node
linkType: hard
"typescript@patch:typescript@~5.0.4#~builtin<compat/typescript>":
version: 5.0.4
resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin<compat/typescript>::version=5.0.4&hash=a1c5e5"
@ -31486,16 +31932,6 @@ __metadata:
languageName: node
linkType: hard
"typescript@patch:typescript@~5.1.0#~builtin<compat/typescript>":
version: 5.1.6
resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=a1c5e5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606
languageName: node
linkType: hard
"typescript@patch:typescript@~5.3.0#~builtin<compat/typescript>":
version: 5.3.3
resolution: "typescript@patch:typescript@npm%3A5.3.3#~builtin<compat/typescript>::version=5.3.3&hash=a1c5e5"
@ -31506,6 +31942,16 @@ __metadata:
languageName: node
linkType: hard
"typescript@patch:typescript@~5.5.0#~builtin<compat/typescript>":
version: 5.5.4
resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin<compat/typescript>::version=5.5.4&hash=a1c5e5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: fc52962f31a5bcb716d4213bef516885e4f01f30cea797a831205fc9ef12b405a40561c40eae3127ab85ba1548e7df49df2bcdee6b84a94bfbe3a0d7eff16b14
languageName: node
linkType: hard
"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5":
version: 1.0.6
resolution: "uc.micro@npm:1.0.6"
@ -32807,6 +33253,17 @@ __metadata:
languageName: node
linkType: hard
"xml-crypto@npm:^6.0.0":
version: 6.0.0
resolution: "xml-crypto@npm:6.0.0"
dependencies:
"@xmldom/is-dom-node": ^1.0.1
"@xmldom/xmldom": ^0.8.10
xpath: ^0.0.33
checksum: 1c679ed66e4cea6309602cf8d536973f7832b69bd400310802365af972c9a0261c9a456c64015e0e92b8c93f168f9f13a355bbbd04d1219ca61c2a3f544d1208
languageName: node
linkType: hard
"xml-encryption@npm:^3.0.2":
version: 3.0.2
resolution: "xml-encryption@npm:3.0.2"
@ -32842,6 +33299,16 @@ __metadata:
languageName: node
linkType: hard
"xml2js@npm:^0.6.2":
version: 0.6.2
resolution: "xml2js@npm:0.6.2"
dependencies:
sax: ">=0.6.0"
xmlbuilder: ~11.0.0
checksum: 458a83806193008edff44562c0bdb982801d61ee7867ae58fd35fab781e69e17f40dfeb8fc05391a4648c9c54012066d3955fe5d993ffbe4dc63399023f32ac2
languageName: node
linkType: hard
"xml@npm:=1.0.1":
version: 1.0.1
resolution: "xml@npm:1.0.1"
@ -32884,6 +33351,20 @@ __metadata:
languageName: node
linkType: hard
"xpath@npm:^0.0.33":
version: 0.0.33
resolution: "xpath@npm:0.0.33"
checksum: 075cd553819302b9df0ae11526b666016ee286b72e0600a923c7565d847fcfa7ff195db3065ec86b9a12f1f81bfc82f1a316fc53442a8572c31582e87ccaec4a
languageName: node
linkType: hard
"xpath@npm:^0.0.34":
version: 0.0.34
resolution: "xpath@npm:0.0.34"
checksum: c10ae2b7be442460462e80a9ef79ca1c9b529abcf696ec3859cddd5a52b64b7e55a54c2c5352ac9c5d195939e2b3aefe708a7428780d7ec0ae7565257ab2a224
languageName: node
linkType: hard
"xtend@npm:^4.0.0":
version: 4.0.2
resolution: "xtend@npm:4.0.2"

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -47,7 +47,10 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.3",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",
"supertest": "^7.0.0"

View File

@ -1,34 +0,0 @@
/*
* Copyright 2023 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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
import { ConfigReader } from '@backstage/config';
const config = new ConfigReader({});
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
const enableCors = yn(process.env.PLUGIN_CORS, { default: false });
const logger = getRootLogger();
startStandaloneServer({ config, port, enableCors, logger }).catch(err => {
logger.error(err);
process.exit(1);
});
process.on('SIGINT', () => {
logger.info('CTRL+C pressed; exiting.');
process.exit(0);
});

View File

@ -1,52 +0,0 @@
/*
* Copyright 2023 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 { createServiceBuilder } from '@backstage/backend-common';
import { Server } from 'http';
import { createRouter } from './router';
import { Config } from '@backstage/config';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
config: Config;
enableCors: boolean;
logger: LoggerService;
port: number;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'nomad' });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
config: options.config,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/nomad', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src/alpha'));
backend.start();

View File

@ -60,7 +60,10 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.3",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",
"supertest": "^7.0.0"

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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,56 +0,0 @@
/*
* Copyright 2022 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 {
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { Server } from 'http';
import { createRouter } from './router';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'periskop-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
config,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/periskop', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -58,8 +58,11 @@
"zod": "^3.22.4"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.3",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",
"@types/uuid": "^9.0.0",

View File

@ -1,33 +0,0 @@
/*
* Copyright 2022 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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,88 +0,0 @@
/*
* Copyright 2022 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 {
createServiceBuilder,
DatabaseManager,
HostDiscovery,
loadBackendConfig,
ServerTokenManager,
} from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { DefaultIdentityClient } from '@backstage/plugin-auth-node';
import { ServerPermissionClient } from '@backstage/plugin-permission-node';
import { Server } from 'http';
import { createRouter } from './router';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'playlist-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
const discovery = HostDiscovery.fromConfig(config);
const manager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: { client: 'better-sqlite3', connection: ':memory:' },
},
}),
);
const database = manager.forPlugin('playlist');
const identity = DefaultIdentityClient.create({
discovery,
issuer: await discovery.getExternalBaseUrl('auth'),
});
const tokenManager = ServerTokenManager.fromConfig(config, {
logger,
});
const permissions = ServerPermissionClient.fromConfig(config, {
discovery,
tokenManager,
});
logger.debug('Starting application server...');
const router = await createRouter({
database,
discovery,
identity,
logger,
permissions,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/playlist', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -45,6 +45,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.3",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.22.10",

View File

@ -1,19 +0,0 @@
import { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
const enableCors = yn(process.env.PLUGIN_CORS, { default: false });
const logger = getRootLogger();
startStandaloneServer({ port, enableCors, logger }).catch(err => {
logger.error('Standalone server failed:', err);
process.exit(1);
});
process.on('SIGINT', () => {
logger.info('CTRL+C pressed; exiting.');
process.exit(0);
});

View File

@ -1,40 +0,0 @@
import { createServiceBuilder } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { Logger } from 'winston';
import { Server } from 'http';
import { createRouter } from './router';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const config = new ConfigReader({});
const logger = options.logger.child({ service: 'report-portal-backend' });
logger.debug('Starting application server...');
const router = await createRouter({
logger,
config,
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/report-portal', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error('Dev server failed:', err);
process.exit(1);
});
}
module.hot?.accept();

View File

@ -0,0 +1,5 @@
---
'@backstage-community/plugin-rollbar-backend': patch
---
Added support for the New Backend System

View File

@ -11,6 +11,31 @@ Simple plugin that proxies requests to the [Rollbar](https://rollbar.com) API.
yarn --cwd packages/backend add @backstage-community/plugin-rollbar-backend
```
2. In your `packages/backend/src/index.ts` make the following changes:
```diff
import { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
// ... other feature additions
+ backend.add(import('@backstage-community/plugin-rollbar-backend'));
// ...
backend.start();
```
### Legacy Backend Setup
1. Install the plugin using:
```bash
# From your Backstage root directory
yarn --cwd packages/backend add @backstage-community/plugin-rollbar-backend
```
2. Create a `rollbar.ts` file inside `packages/backend/src/plugins/`:
```typescript

View File

@ -3,9 +3,10 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
import express from 'express';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
// @public (undocumented)
export function createRouter(options: RouterOptions): Promise<express.Router>;
@ -19,7 +20,7 @@ export function getRequestHeaders(token: string): {
// @public (undocumented)
export class RollbarApi {
constructor(accessToken: string, logger: Logger);
constructor(accessToken: string, logger: LoggerService);
// (undocumented)
getActivatedCounts(
projectName: string,
@ -177,6 +178,10 @@ export enum RollbarPlatformId {
'unknown' = 0,
}
// @public
const rollbarPlugin: BackendFeature;
export default rollbarPlugin;
// @public (undocumented)
export type RollbarProject = {
id: number;
@ -219,7 +224,7 @@ export interface RouterOptions {
// (undocumented)
config: Config;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
rollbarApi?: RollbarApi;
}

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -43,6 +43,7 @@
},
"dependencies": {
"@backstage/backend-common": "^0.24.0",
"@backstage/backend-plugin-api": "^1.0.0",
"@backstage/config": "^1.2.0",
"@types/express": "^4.17.6",
"compression": "^1.7.4",
@ -57,8 +58,11 @@
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.4.3",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.22.10",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.1.9",
"@types/lodash": "^4.14.151",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",

View File

@ -14,7 +14,6 @@
* limitations under the License.
*/
import { Logger } from 'winston';
import { camelCase } from 'lodash';
import { buildQuery } from '../util';
import {
@ -25,6 +24,7 @@ import {
RollbarTopActiveItem,
} from './types';
import fetch from 'node-fetch';
import { LoggerService } from '@backstage/backend-plugin-api';
const baseUrl = 'https://api.rollbar.com/api/1';
@ -48,7 +48,7 @@ export class RollbarApi {
constructor(
private readonly accessToken: string,
private readonly logger: Logger,
private readonly logger: LoggerService,
) {}
async getAllProjects() {

View File

@ -22,3 +22,4 @@
export * from './api';
export * from './service/router';
export { rollbarPlugin as default } from './plugin';

View File

@ -0,0 +1,47 @@
/*
* Copyright 2023 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 {
coreServices,
createBackendPlugin,
} from '@backstage/backend-plugin-api';
import { createRouter } from './service/router';
/**
* Rollbar backend plugin
*
* @public
*/
export const rollbarPlugin = createBackendPlugin({
pluginId: 'azure-devops',
register(env) {
env.registerInit({
deps: {
config: coreServices.rootConfig,
logger: coreServices.logger,
httpRouter: coreServices.httpRouter,
},
async init({ config, logger, httpRouter }) {
httpRouter.use(
await createRouter({
config,
logger,
}),
);
},
});
},
});

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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -16,15 +16,15 @@
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { errorHandler } from '@backstage/backend-common';
import { Config } from '@backstage/config';
import { RollbarApi } from '../api';
import { LoggerService } from '@backstage/backend-plugin-api';
/** @public */
export interface RouterOptions {
rollbarApi?: RollbarApi;
logger: Logger;
logger: LoggerService;
config: Config;
}
@ -90,7 +90,7 @@ export async function createRouter(
return router;
}
function getRollbarAccountToken(config: Config, logger: Logger) {
function getRollbarAccountToken(config: Config, logger: LoggerService) {
const token =
config.getOptionalString('accountToken') ||
process.env.ROLLBAR_ACCOUNT_TOKEN ||

View File

@ -1,52 +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,
loadBackendConfig,
} from '@backstage/backend-common';
import { createRouter } from './router';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'rollbar-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
logger.debug('Creating application...');
const router = await createRouter({ logger, config });
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/catalog', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -49,8 +49,11 @@
"yn": "^5.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",
"msw": "^1.0.0",

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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,56 +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 {
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { Server } from 'http';
import { createRouter } from './router';
import { DefaultSonarqubeInfoProvider } from './sonarqubeInfoProvider';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: LoggerService;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'sonarqube-backend-backend' });
logger.debug('Starting application server...');
const config = await loadBackendConfig({ logger, argv: process.argv });
const router = await createRouter({
logger,
sonarqubeInfoProvider: DefaultSonarqubeInfoProvider.fromConfig(config),
});
let service = createServiceBuilder(module)
.setPort(options.port)
.addRouter('/sonarqube', router);
if (options.enableCors) {
service = service.enableCors({ origin: 'http://localhost:3000' });
}
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
});
}
module.hot?.accept();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/*
* Copyright 2024 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 { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
backend.add(import('@backstage/plugin-auth-backend'));
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
backend.add(import('../src'));
backend.start();

View File

@ -62,8 +62,11 @@
"yn": "^5.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/backend-test-utils": "^0.5.0",
"@backstage/cli": "^0.27.0",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@types/compression": "^1.7.2",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",

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 { getRootLogger } from '@backstage/backend-common';
import yn from 'yn';
import { startStandaloneServer } from './service/standaloneServer';
const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007;
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);
});

View File

@ -1,76 +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 {
errorHandler,
notFoundHandler,
requestLoggingHandler,
DatabaseManager,
getVoidLogger,
} from '@backstage/backend-common';
import compression from 'compression';
import cors from 'cors';
import express from 'express';
import helmet from 'helmet';
import { Logger } from 'winston';
import { createRouter } from './router';
import { ConfigReader } from '@backstage/config';
// Think this file will probably go away once we move to backend system
// And restructure into the /dev folder
// eslint-disable-next-line @backstage/no-undeclared-imports
import { TestDatabases } from '@backstage/backend-test-utils';
import { TaskScheduler } from '@backstage/backend-tasks';
export interface ApplicationOptions {
enableCors: boolean;
logger: Logger;
}
export async function createStandaloneApplication(
options: ApplicationOptions,
): Promise<express.Application> {
const { enableCors, logger } = options;
const config = new ConfigReader({});
const app = express();
const databases = TestDatabases.create({
ids: ['POSTGRES_16', 'POSTGRES_12', 'SQLITE_3'],
});
const knex = await databases.init('SQLITE_3');
const databaseManager: Partial<DatabaseManager> = {
forPlugin: (_: string) => ({
getClient: async () => knex,
}),
};
const manager = databaseManager as DatabaseManager;
const scheduler = new TaskScheduler(manager, getVoidLogger()).forPlugin(
'vault',
);
app.use(helmet());
if (enableCors) {
app.use(cors());
}
app.use(compression());
app.use(express.json());
app.use(requestLoggingHandler());
app.use('/', createRouter({ logger, config, scheduler }));
app.use(notFoundHandler());
app.use(errorHandler());
return app;
}

View File

@ -1,50 +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 { createStandaloneApplication } from './standaloneApplication';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'vault-backend' });
logger.debug('Creating application...');
const app = await createStandaloneApplication({
enableCors: options.enableCors,
logger,
});
logger.debug('Starting application server...');
return await new Promise((resolve, reject) => {
const server = app.listen(options.port, (err?: Error) => {
if (err) {
reject(err);
return;
}
logger.info(`Listening on port ${options.port}`);
resolve(server);
});
});
}

File diff suppressed because it is too large Load Diff