1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/packages/technical-features/feature-core
Janne Savolainen a9bd5ae7e2
Extract agnostic and electron-main ways of starting application to separate packages (#7259)
* Introduce an agnostic way to start application is the Feature

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Introduce directory for application-packages

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Remove non agnostic timeslots from agnostic application

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Introduce empty package for electron main specific stuff for Application Feature

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Introduce electron-main specific timeslots

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Update injectable version

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Update README

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Tweak export names to make them easier to import

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Make starting of application synchronous for Electron main

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Tweak versions in package jsons

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Consolidate name of feature file

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

---------

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
2023-03-06 10:17:24 +02:00
..
src Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00
index.ts Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00
jest.config.js Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00
package.json Extract agnostic and electron-main ways of starting application to separate packages (#7259) 2023-03-06 10:17:24 +02:00
README.md Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00
tsconfig.json Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00
webpack.config.js Introduce package for Features (#7242) 2023-02-28 08:37:07 -05:00

@k8slens/feature-core

Feature is set of injectables that are registered and deregistered simultaneously.

Install

$ npm install @k8slens/feature-core

Usage

import { createContainer } from "@ogre-tools/injectable"
import { getFeature, registerFeature, deregisterFeature } from "@k8slens/feature-core"

// Notice that this Feature is usually exported from another NPM package.
const someFeature = getFeature({
  id: "some-feature",
  
  register: (di) => {
    di.register(someInjectable, someOtherInjectable);
  },
  
  // Feature dependencies are automatically registered and 
  // deregistered when necessary.
  dependencies: [someOtherFeature] 
});

const di = createContainer("some-container");

registerFeature(di, someFeature);

// Or perhaps you want to deregister?
deregisterFeature(di, someFeature);

Need to know

NPM packages exporting a Feature

  • Prefer peerDependencies since they are installed from the application and are not allowed to be in the built bundle.
  • Prefer exporting injectionToken instead of injectable for not allowing other features to access technical details like the injectable