From 4d2ee1643666291e125d189408dce2031d4e122e Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Mon, 27 Mar 2023 13:38:07 +0300 Subject: [PATCH] Introduce empty Feature package for the dock Signed-off-by: Janne Savolainen --- .../business-features/dock/.eslintrc.json | 6 +++ packages/business-features/dock/.prettierrc | 1 + packages/business-features/dock/README.md | 21 ++++++++++ packages/business-features/dock/index.ts | 1 + .../business-features/dock/jest.config.js | 1 + packages/business-features/dock/package.json | 42 +++++++++++++++++++ .../business-features/dock/src/feature.ts | 14 +++++++ packages/business-features/dock/tsconfig.json | 4 ++ .../business-features/dock/webpack.config.js | 1 + 9 files changed, 91 insertions(+) create mode 100644 packages/business-features/dock/.eslintrc.json create mode 100644 packages/business-features/dock/.prettierrc create mode 100644 packages/business-features/dock/README.md create mode 100644 packages/business-features/dock/index.ts create mode 100644 packages/business-features/dock/jest.config.js create mode 100644 packages/business-features/dock/package.json create mode 100644 packages/business-features/dock/src/feature.ts create mode 100644 packages/business-features/dock/tsconfig.json create mode 100644 packages/business-features/dock/webpack.config.js diff --git a/packages/business-features/dock/.eslintrc.json b/packages/business-features/dock/.eslintrc.json new file mode 100644 index 0000000000..b15115cb69 --- /dev/null +++ b/packages/business-features/dock/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "@k8slens/eslint-config/eslint", + "parserOptions": { + "project": "./tsconfig.json" + } +} diff --git a/packages/business-features/dock/.prettierrc b/packages/business-features/dock/.prettierrc new file mode 100644 index 0000000000..edd47b479e --- /dev/null +++ b/packages/business-features/dock/.prettierrc @@ -0,0 +1 @@ +"@k8slens/eslint-config/prettier" diff --git a/packages/business-features/dock/README.md b/packages/business-features/dock/README.md new file mode 100644 index 0000000000..9ba34019cc --- /dev/null +++ b/packages/business-features/dock/README.md @@ -0,0 +1,21 @@ +# @k8slens/dock + +This package contains stuff related to creating Lens-applications. + +# Usage + +```bash +$ npm install @k8slens/dock +``` + +```typescript +import { dockFeature } from "@k8slens/dock"; +import { registerFeature } from "@k8slens/feature-core"; +import { createContainer } from "@ogre-tools/injectable"; + +const di = createContainer("some-container"); + +registerFeature(di, dockFeature); +``` + +## Extendability diff --git a/packages/business-features/dock/index.ts b/packages/business-features/dock/index.ts new file mode 100644 index 0000000000..6f73270f3f --- /dev/null +++ b/packages/business-features/dock/index.ts @@ -0,0 +1 @@ +export { dockFeature } from "./src/feature"; diff --git a/packages/business-features/dock/jest.config.js b/packages/business-features/dock/jest.config.js new file mode 100644 index 0000000000..c6074967eb --- /dev/null +++ b/packages/business-features/dock/jest.config.js @@ -0,0 +1 @@ +module.exports = require("@k8slens/jest").monorepoPackageConfig(__dirname).configForNode; diff --git a/packages/business-features/dock/package.json b/packages/business-features/dock/package.json new file mode 100644 index 0000000000..48697a680c --- /dev/null +++ b/packages/business-features/dock/package.json @@ -0,0 +1,42 @@ +{ + "name": "@k8slens/dock", + "private": false, + "version": "1.0.0-alpha.0", + "description": "Highly extendable dock in the Lens.", + "type": "commonjs", + "files": [ + "agnostic/dist" + ], + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lensapp/lens.git" + }, + "main": "agnostic/dist/index.js", + "types": "dist/index.d.ts", + "author": { + "name": "OpenLens Authors", + "email": "info@k8slens.dev" + }, + "license": "MIT", + "homepage": "https://github.com/lensapp/lens", + "scripts": { + "build": "webpack", + "dev": "webpack --mode=development --watch", + "test:unit": "jest --coverage --runInBand", + "lint": "lens-lint", + "lint:fix": "lens-lint --fix" + }, + "peerDependencies": { + "@k8slens/feature-core": "^6.5.0-alpha.0", + "@ogre-tools/injectable": "^15.1.2", + "@ogre-tools/injectable-extension-for-auto-registration": "^15.1.2" + }, + "devDependencies": { + "@async-fn/jest": "^1.6.4", + "@k8slens/eslint-config": "6.5.0-alpha.1" + } +} diff --git a/packages/business-features/dock/src/feature.ts b/packages/business-features/dock/src/feature.ts new file mode 100644 index 0000000000..fb49ccd01d --- /dev/null +++ b/packages/business-features/dock/src/feature.ts @@ -0,0 +1,14 @@ +import { getFeature } from "@k8slens/feature-core"; +import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; + +export const dockFeature = getFeature({ + id: "dock", + + register: (di) => { + autoRegister({ + di, + targetModule: module, + getRequireContexts: () => [require.context("./", true, /\.injectable\.(ts|tsx)$/)], + }); + }, +}); diff --git a/packages/business-features/dock/tsconfig.json b/packages/business-features/dock/tsconfig.json new file mode 100644 index 0000000000..ec29a8f75f --- /dev/null +++ b/packages/business-features/dock/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@k8slens/typescript/config/base.json", + "include": ["**/*.ts", "**/*.tsx"] +} diff --git a/packages/business-features/dock/webpack.config.js b/packages/business-features/dock/webpack.config.js new file mode 100644 index 0000000000..3183f30179 --- /dev/null +++ b/packages/business-features/dock/webpack.config.js @@ -0,0 +1 @@ +module.exports = require("@k8slens/webpack").configForNode;