From c01c7d0c7e46896151b24ff0ffd8a456d4a54b4c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 20 Sep 2024 10:17:19 +0200 Subject: [PATCH] frontend-internal: move OpaqueType to a new @internal/opaque package Signed-off-by: Patrik Oldsberg --- .../src/wiring/InternalExtensionDefinition.ts | 2 +- .../src/wiring/InternalFrontendPlugin.ts | 2 +- packages/internal-opaque/.eslintrc.js | 5 ++++ packages/internal-opaque/README.md | 3 ++ packages/internal-opaque/catalog-info.yaml | 9 ++++++ packages/internal-opaque/package.json | 30 +++++++++++++++++++ .../src}/OpaqueType.test.ts | 0 .../src}/OpaqueType.ts | 0 packages/internal-opaque/src/index.ts | 17 +++++++++++ yarn.lock | 10 +++++++ 10 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 packages/internal-opaque/.eslintrc.js create mode 100644 packages/internal-opaque/README.md create mode 100644 packages/internal-opaque/catalog-info.yaml create mode 100644 packages/internal-opaque/package.json rename packages/{frontend-internal/src/wiring => internal-opaque/src}/OpaqueType.test.ts (100%) rename packages/{frontend-internal/src/wiring => internal-opaque/src}/OpaqueType.ts (100%) create mode 100644 packages/internal-opaque/src/index.ts diff --git a/packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts b/packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts index a77ffd485b..12027e0bb6 100644 --- a/packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts +++ b/packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts @@ -25,7 +25,7 @@ import { PortableSchema, ResolvedExtensionInputs, } from '@backstage/frontend-plugin-api'; -import { OpaqueType } from './OpaqueType'; +import { OpaqueType } from '@internal/opaque'; export const OpaqueExtensionDefinition = OpaqueType.create<{ public: ExtensionDefinition; diff --git a/packages/frontend-internal/src/wiring/InternalFrontendPlugin.ts b/packages/frontend-internal/src/wiring/InternalFrontendPlugin.ts index 1755d0521d..a7be9614b6 100644 --- a/packages/frontend-internal/src/wiring/InternalFrontendPlugin.ts +++ b/packages/frontend-internal/src/wiring/InternalFrontendPlugin.ts @@ -19,7 +19,7 @@ import { FeatureFlagConfig, FrontendPlugin, } from '@backstage/frontend-plugin-api'; -import { OpaqueType } from './OpaqueType'; +import { OpaqueType } from '@internal/opaque'; export const OpaqueFrontendPlugin = OpaqueType.create<{ public: FrontendPlugin; diff --git a/packages/internal-opaque/.eslintrc.js b/packages/internal-opaque/.eslintrc.js new file mode 100644 index 0000000000..e487f765b2 --- /dev/null +++ b/packages/internal-opaque/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, { + rules: { + '@backstage/no-top-level-material-ui-4-imports': 'error', + }, +}); diff --git a/packages/internal-opaque/README.md b/packages/internal-opaque/README.md new file mode 100644 index 0000000000..0dca55217f --- /dev/null +++ b/packages/internal-opaque/README.md @@ -0,0 +1,3 @@ +# @internal/opaque + +This is an internal package for use by other internal packages. Instances created with `OpaqueType.create` should never be exported in any public API, instead use an `@internal/*` if they need to be used in multiple packages. diff --git a/packages/internal-opaque/catalog-info.yaml b/packages/internal-opaque/catalog-info.yaml new file mode 100644 index 0000000000..53caf03f65 --- /dev/null +++ b/packages/internal-opaque/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: internal-opaque + title: "@internal/opaque" +spec: + lifecycle: experimental + type: backstage-common-library + owner: maintainers diff --git a/packages/internal-opaque/package.json b/packages/internal-opaque/package.json new file mode 100644 index 0000000000..222c665984 --- /dev/null +++ b/packages/internal-opaque/package.json @@ -0,0 +1,30 @@ +{ + "name": "@internal/opaque", + "version": "0.0.1", + "backstage": { + "role": "common-library", + "inline": true + }, + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/internal-opaque" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], + "scripts": { + "lint": "backstage-cli package lint", + "test": "backstage-cli package test" + }, + "devDependencies": { + "@backstage/cli": "workspace:^", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^16.0.0" + } +} diff --git a/packages/frontend-internal/src/wiring/OpaqueType.test.ts b/packages/internal-opaque/src/OpaqueType.test.ts similarity index 100% rename from packages/frontend-internal/src/wiring/OpaqueType.test.ts rename to packages/internal-opaque/src/OpaqueType.test.ts diff --git a/packages/frontend-internal/src/wiring/OpaqueType.ts b/packages/internal-opaque/src/OpaqueType.ts similarity index 100% rename from packages/frontend-internal/src/wiring/OpaqueType.ts rename to packages/internal-opaque/src/OpaqueType.ts diff --git a/packages/internal-opaque/src/index.ts b/packages/internal-opaque/src/index.ts new file mode 100644 index 0000000000..54d06588e2 --- /dev/null +++ b/packages/internal-opaque/src/index.ts @@ -0,0 +1,17 @@ +/* + * 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. + */ + +export { OpaqueType } from './OpaqueType'; diff --git a/yarn.lock b/yarn.lock index 7d99c61eb3..e2c4eb08c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9872,6 +9872,16 @@ __metadata: languageName: unknown linkType: soft +"@internal/opaque@workspace:packages/internal-opaque": + version: 0.0.0-use.local + resolution: "@internal/opaque@workspace:packages/internal-opaque" + dependencies: + "@backstage/cli": "workspace:^" + "@testing-library/jest-dom": ^6.0.0 + "@testing-library/react": ^16.0.0 + languageName: unknown + linkType: soft + "@internal/plugin-todo-list-backend@workspace:plugins/example-todo-list-backend": version: 0.0.0-use.local resolution: "@internal/plugin-todo-list-backend@workspace:plugins/example-todo-list-backend"