mirror of
https://github.com/podman-desktop/podman-desktop
synced 2026-04-21 17:47:22 +00:00
chore: apply prettier on .md, .json and .css files
Change-Id: Ic08ccbb1f248d07c39cdc768daa3423bfef7e6fc Signed-off-by: Florent Benoit <fbenoit@redhat.com>
This commit is contained in:
parent
3d7d105c0f
commit
f54eef9ddb
23 changed files with 229 additions and 299 deletions
160
CONTRIBUTING.md
160
CONTRIBUTING.md
|
|
@ -9,19 +9,19 @@ that we follow.
|
|||
|
||||
## Topics
|
||||
|
||||
* [Reporting Issues](#reporting-issues)
|
||||
* [Working On Issues](#working-on-issues)
|
||||
* [Contributing](#contributing)
|
||||
* [Continuous Integration](#continuous-integration)
|
||||
* [Submitting Pull Requests](#submitting-pull-requests)
|
||||
* [Communication](#communication)
|
||||
* [Code Architecture](#code-architecture)
|
||||
- [Reporting Issues](#reporting-issues)
|
||||
- [Working On Issues](#working-on-issues)
|
||||
- [Contributing](#contributing)
|
||||
- [Continuous Integration](#continuous-integration)
|
||||
- [Submitting Pull Requests](#submitting-pull-requests)
|
||||
- [Communication](#communication)
|
||||
- [Code Architecture](#code-architecture)
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
Before opening an issue, check the backlog of
|
||||
[open issues](https://github.com/containers/podman-desktop/issues)
|
||||
to see if someone else has already reported it.
|
||||
to see if someone else has already reported it.
|
||||
|
||||
If so, feel free to add
|
||||
your scenario, or additional information, to the discussion. Or simply
|
||||
|
|
@ -37,9 +37,9 @@ Please don't include any private/sensitive information in your issue!
|
|||
|
||||
## Working On Issues
|
||||
|
||||
Often issues will be assigned to someone, to be worked on at a later time.
|
||||
Often issues will be assigned to someone, to be worked on at a later time.
|
||||
|
||||
If you are a member of the [Containers](https://github.com/containers) organization,
|
||||
If you are a member of the [Containers](https://github.com/containers) organization,
|
||||
self-assign the issue with the `status/in-progress` label.
|
||||
|
||||
If you can not set the label: add a quick comment in the issue asking that
|
||||
|
|
@ -53,17 +53,19 @@ This section describes how to start a contribution to Podman Desktop.
|
|||
|
||||
You can develop on either: `Windows`, `macOS` or `Linux`.
|
||||
|
||||
Requirements:
|
||||
* [Node.js 16+](https://nodejs.org/en/)
|
||||
* [yarn](https://yarnpkg.com/)
|
||||
Requirements:
|
||||
|
||||
- [Node.js 16+](https://nodejs.org/en/)
|
||||
- [yarn](https://yarnpkg.com/)
|
||||
|
||||
Optional Linux requirements:
|
||||
* [Flatpak builder, runtime, and SDK, version 22.08](https://docs.flatpak.org/en/latest/first-build.html)
|
||||
|
||||
- [Flatpak builder, runtime, and SDK, version 22.08](https://docs.flatpak.org/en/latest/first-build.html)
|
||||
```sh
|
||||
flatpak remote-add --if-not-exists flathub --user https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak install --user flathub org.flatpak.Builder org.freedesktop.Platform//22.08 org.freedesktop.Sdk//22.08
|
||||
```
|
||||
* GNU C and C++ compiler
|
||||
- GNU C and C++ compiler
|
||||
Fedora/RHEL
|
||||
```sh
|
||||
dnf install gpp-c++
|
||||
|
|
@ -99,25 +101,32 @@ Run the application in watch mode:
|
|||
yarn watch
|
||||
```
|
||||
|
||||
The dev environment will track all files changes and reload the application respectively.
|
||||
The dev environment will track all files changes and reload the application respectively.
|
||||
|
||||
### Step 4. Write and run tests
|
||||
|
||||
Write tests! Please try to write some unit tests when submitting your PR.
|
||||
|
||||
Run the tests using `yarn`:
|
||||
|
||||
```sh
|
||||
yarn test
|
||||
```
|
||||
|
||||
Depending on to what part of project you contribute to, you can specify to run tests for the given module only, ie., if you are working on extensions, you can run the tests for extensions and have faster feedback:
|
||||
|
||||
```sh
|
||||
yarn test:extensions
|
||||
```
|
||||
|
||||
or if you are contributing to a particular extension, you can call:
|
||||
|
||||
```sh
|
||||
yarn test:extensions:compose
|
||||
```
|
||||
|
||||
This will show a test results for restricted amount of tests:
|
||||
|
||||
```
|
||||
✓ src/os.spec.ts (3)
|
||||
✓ src/detect.spec.ts (10) 518ms
|
||||
|
|
@ -130,31 +139,35 @@ This will show a test results for restricted amount of tests:
|
|||
Start at 17:17:07
|
||||
Duration 1.27s (transform 562ms, setup 0ms, collect 1.25s, tests 587ms)
|
||||
```
|
||||
Check the npm script tasks in our `package.json` for more options.
|
||||
|
||||
Check the npm script tasks in our `package.json` for more options.
|
||||
|
||||
### Step 5. Code coverage
|
||||
|
||||
Part of every test is also a code coverage report which can be obtain from the test run output (using simple text reporter)
|
||||
found in project root `./test-resources/coverage/*`. Depending if you have run all or just a part of the tests, you will have partial test coverage report generated, example:
|
||||
|
||||
```
|
||||
% Coverage report from c8
|
||||
------------------------------|---------|----------|---------|---------|-------------------
|
||||
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
||||
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
||||
------------------------------|---------|----------|---------|---------|-------------------
|
||||
All files | 75.1 | 97.22 | 93.75 | 75.1 |
|
||||
cli-run.ts | 0 | 0 | 0 | 0 | 1-119
|
||||
compose-extension.ts | 100 | 100 | 100 | 100 |
|
||||
compose-github-releases.ts | 100 | 100 | 100 | 100 |
|
||||
compose-wrapper-generator.ts | 100 | 100 | 100 | 100 |
|
||||
detect.ts | 100 | 100 | 100 | 100 |
|
||||
extension.ts | 0 | 0 | 0 | 0 | 1-54
|
||||
os.ts | 100 | 100 | 100 | 100 |
|
||||
All files | 75.1 | 97.22 | 93.75 | 75.1 |
|
||||
cli-run.ts | 0 | 0 | 0 | 0 | 1-119
|
||||
compose-extension.ts | 100 | 100 | 100 | 100 |
|
||||
compose-github-releases.ts | 100 | 100 | 100 | 100 |
|
||||
compose-wrapper-generator.ts | 100 | 100 | 100 | 100 |
|
||||
detect.ts | 100 | 100 | 100 | 100 |
|
||||
extension.ts | 0 | 0 | 0 | 0 | 1-54
|
||||
os.ts | 100 | 100 | 100 | 100 |
|
||||
------------------------------|---------|----------|---------|---------|-------------------
|
||||
```
|
||||
|
||||
For a detailed information about the code coverage you can search the mentioned folder and find `html` lcov report:
|
||||
`test-resources/coverage/extensions/compose/lcov-report/index.html`
|
||||
|
||||
When contribuing the new code, you should consider not lowering overall code coverage.
|
||||
|
||||
### Step 6. Code formatter / linter
|
||||
|
||||
We use `prettier` as a formatter and `eslint` for linting.
|
||||
|
|
@ -195,15 +208,15 @@ Make sure you include the issue in your PR! For example, say: `Closes #XXX`.
|
|||
|
||||
PRs will be approved by an [approver][owners] listed in [`CODEOWNERS`](CODEOWNERS).
|
||||
|
||||
We typically require one approval for code as well as documentation-related PR's. If it is a large code-related PR, proof of review / testing (a video / screenshot) is required.
|
||||
We typically require one approval for code as well as documentation-related PR's. If it is a large code-related PR, proof of review / testing (a video / screenshot) is required.
|
||||
|
||||
Some tips for the PR process:
|
||||
|
||||
* No PR too small! Feel free to open a PR against tests, bugs, new features, docs, etc.
|
||||
* Make sure you include as much information as possible in your PR so maintainers can understand.
|
||||
* Try to break up larger PRs into smaller ones for easier reviewing
|
||||
* Any additional code changes should be in a new commit so we can see what has changed between reviews.
|
||||
* Squash your commits into logical pieces of work
|
||||
- No PR too small! Feel free to open a PR against tests, bugs, new features, docs, etc.
|
||||
- Make sure you include as much information as possible in your PR so maintainers can understand.
|
||||
- Try to break up larger PRs into smaller ones for easier reviewing
|
||||
- Any additional code changes should be in a new commit so we can see what has changed between reviews.
|
||||
- Squash your commits into logical pieces of work
|
||||
|
||||
### Use the correct commit message semantics
|
||||
|
||||
|
|
@ -211,25 +224,24 @@ We follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0
|
|||
|
||||
Some examples for correct titles would be:
|
||||
|
||||
* `fix: prevent racing of requests`
|
||||
* `chore: drop support for Node 6`
|
||||
* `docs: add quickstart guide`
|
||||
- `fix: prevent racing of requests`
|
||||
- `chore: drop support for Node 6`
|
||||
- `docs: add quickstart guide`
|
||||
|
||||
For Podman Desktop we use the following types:
|
||||
|
||||
* `fix:` A bug fix
|
||||
* `chore:` Very small change / insignificant impact
|
||||
* `docs:` Documentation only changes (ex. website)
|
||||
* `build:` Changes that affect the build system
|
||||
* `ci:` Changes to the CI (ex. GitHub actions)
|
||||
* `feat:` A new feature
|
||||
* `perf:` A code change that improves performance
|
||||
* `refactor:` A code change that neither fixes a bug nor adds a feature
|
||||
* `style:` Changes that affect the formatting, but not the ability of the code
|
||||
* `test:` Adding missing tests / new tests
|
||||
- `fix:` A bug fix
|
||||
- `chore:` Very small change / insignificant impact
|
||||
- `docs:` Documentation only changes (ex. website)
|
||||
- `build:` Changes that affect the build system
|
||||
- `ci:` Changes to the CI (ex. GitHub actions)
|
||||
- `feat:` A new feature
|
||||
- `perf:` A code change that improves performance
|
||||
- `refactor:` A code change that neither fixes a bug nor adds a feature
|
||||
- `style:` Changes that affect the formatting, but not the ability of the code
|
||||
- `test:` Adding missing tests / new tests
|
||||
|
||||
|
||||
Title formatting:
|
||||
Title formatting:
|
||||
|
||||
```
|
||||
<type>[optional scope]: <description>
|
||||
|
|
@ -243,7 +255,7 @@ Title formatting:
|
|||
|
||||
The sign-off is a line at the end of the explanation for the patch. Your
|
||||
signature certifies that you wrote the patch or otherwise have the right to pass
|
||||
it on as an open-source patch.
|
||||
it on as an open-source patch.
|
||||
|
||||
Then you just add a line to every git commit message:
|
||||
|
||||
|
|
@ -254,7 +266,6 @@ Legal name must be used (no pseudonyms or anonymous contributions)
|
|||
If you set your `user.name` and `user.email` git configs, you can sign your
|
||||
commit automatically with `git commit -s`.
|
||||
|
||||
|
||||
### Review process
|
||||
|
||||
1. Submit your PR
|
||||
|
|
@ -267,8 +278,8 @@ commit automatically with `git commit -s`.
|
|||
|
||||
All pull requests and branch-merges automatically run:
|
||||
|
||||
* Format and lint checking
|
||||
* Cross-platform builds (Windows, macOS, Linux)
|
||||
- Format and lint checking
|
||||
- Cross-platform builds (Windows, macOS, Linux)
|
||||
|
||||
You can follow these jobs in Github Actions https://github.com/containers/podman-desktop/actions
|
||||
|
||||
|
|
@ -283,19 +294,21 @@ Discussions are possible using Github Discussions https://github.com/containers/
|
|||
### Frameworks and tooling
|
||||
|
||||
Within Podman Desktop, we use the following frameworks and tools to build the desktop application:
|
||||
* [Electron](https://www.electronjs.org/): In order to deploy cross-platform to multiple operating systems.
|
||||
* [Svelte](https://svelte.dev/): The reactive UI/UX framework for building the interface.
|
||||
* [Tailwind CSS](https://tailwindcss.com/): A utility-first CSS framework for the UI/UX framework.
|
||||
* [Vite](https://vitejs.dev/): Dev tooling for rapid development, debugging and deployment.
|
||||
|
||||
> **_NOTE:_** We also use TypeScript instead of JavaScript for strongly typed programming language development.
|
||||
- [Electron](https://www.electronjs.org/): In order to deploy cross-platform to multiple operating systems.
|
||||
- [Svelte](https://svelte.dev/): The reactive UI/UX framework for building the interface.
|
||||
- [Tailwind CSS](https://tailwindcss.com/): A utility-first CSS framework for the UI/UX framework.
|
||||
- [Vite](https://vitejs.dev/): Dev tooling for rapid development, debugging and deployment.
|
||||
|
||||
> **_NOTE:_** We also use TypeScript instead of JavaScript for strongly typed programming language development.
|
||||
|
||||
### Testing
|
||||
|
||||
Within Podman Desktop, we use the following for testing:
|
||||
* [Vitest](https://vitest.dev/): Unit tests - Written as `spec.ts` files.
|
||||
* [Testing Library](https://testing-library.com/): Component tests - Utilities and best practices for writing component tests.
|
||||
* [Playwright](https://playwright.dev/): Integration tests.
|
||||
|
||||
- [Vitest](https://vitest.dev/): Unit tests - Written as `spec.ts` files.
|
||||
- [Testing Library](https://testing-library.com/): Component tests - Utilities and best practices for writing component tests.
|
||||
- [Playwright](https://playwright.dev/): Integration tests.
|
||||
|
||||
### Folders
|
||||
|
||||
|
|
@ -303,20 +316,19 @@ Below are brief descriptions on the architecture on each folder of Podman Deskto
|
|||
|
||||
If you're unsure where to add code (renderer, UI, extensions, plugins) see the below TLDR:
|
||||
|
||||
* `__mocks__/`: Mock packages for Vitest.
|
||||
* `buildResources`: Podman Desktop logo location / build resources for electron
|
||||
* `extensions`: We separate functionality into separate "extensions" to keep Podman Desktop modular. Here you'll find extensions such as Kubernetes, CRC, Podman and Docker functionality that Podman Desktop interacts with and integrates into the API (see `packages/extension-api`). Examples include `extensions/crc`, `extensions/podman`, `extensions/docker`.
|
||||
* `packages/extension-api`: The extension API for extensions such as `extensions/podman` to interact with the Podman Desktop GUI. This API acts as a "middleware" to the main Electron functionality such as displaying notifications, progress messages, configuration changes, etc.
|
||||
* `packages/main`: Electron process code that is responsible for creating the app's main windows, setting up system events and communicating with other processes
|
||||
* `packages/preload`: Electron code that runs before the page gets rendered. Typically has access to APIs and used to setup communication processes between the main and renderer code.
|
||||
* `packages/preload-docker-extension`: Electron preload code specific to the Docker Desktop extension.
|
||||
* `packages/renderer`: Electron code that runs in the renderer process. The renderer runs separate to the main process and is responsible for typically rendering the main pages of Podman Desktop. Typically, this is where you find the `.svelte` code that renders the main Podman Desktop UI.
|
||||
* `scripts`: Scripts Podman Desktop requires such as `yarn watch` functionality and updating Electron vendorered modules.
|
||||
* `tests`: Contains e2e tests for Podman Desktop.
|
||||
* `types`: Additional types required for TypeScript.
|
||||
* `website`: The documentation as well as [Podman Desktop website](https://podman-desktop.io) developed in [Docusaurus](https://docusaurus.io).
|
||||
* `node_modules`: Location for Node.JS packages / dependencies.
|
||||
|
||||
- `__mocks__/`: Mock packages for Vitest.
|
||||
- `buildResources`: Podman Desktop logo location / build resources for electron
|
||||
- `extensions`: We separate functionality into separate "extensions" to keep Podman Desktop modular. Here you'll find extensions such as Kubernetes, CRC, Podman and Docker functionality that Podman Desktop interacts with and integrates into the API (see `packages/extension-api`). Examples include `extensions/crc`, `extensions/podman`, `extensions/docker`.
|
||||
- `packages/extension-api`: The extension API for extensions such as `extensions/podman` to interact with the Podman Desktop GUI. This API acts as a "middleware" to the main Electron functionality such as displaying notifications, progress messages, configuration changes, etc.
|
||||
- `packages/main`: Electron process code that is responsible for creating the app's main windows, setting up system events and communicating with other processes
|
||||
- `packages/preload`: Electron code that runs before the page gets rendered. Typically has access to APIs and used to setup communication processes between the main and renderer code.
|
||||
- `packages/preload-docker-extension`: Electron preload code specific to the Docker Desktop extension.
|
||||
- `packages/renderer`: Electron code that runs in the renderer process. The renderer runs separate to the main process and is responsible for typically rendering the main pages of Podman Desktop. Typically, this is where you find the `.svelte` code that renders the main Podman Desktop UI.
|
||||
- `scripts`: Scripts Podman Desktop requires such as `yarn watch` functionality and updating Electron vendorered modules.
|
||||
- `tests`: Contains e2e tests for Podman Desktop.
|
||||
- `types`: Additional types required for TypeScript.
|
||||
- `website`: The documentation as well as [Podman Desktop website](https://podman-desktop.io) developed in [Docusaurus](https://docusaurus.io).
|
||||
- `node_modules`: Location for Node.JS packages / dependencies.
|
||||
|
||||
> **_NOTE:_** Each `extension` folder is a separately packaged module. If there are any issues with loading, make sure your module is packaged correctly.
|
||||
|
||||
|
|
@ -324,4 +336,4 @@ If you're unsure where to add code (renderer, UI, extensions, plugins) see the b
|
|||
|
||||
Podman Desktop is moduralized into extensions for each 'Provider'. You can also create and add your own extension.
|
||||
|
||||
See our [EXTENSIONS.md](/EXTENSIONS.md) document for more details.
|
||||
See our [EXTENSIONS.md](/EXTENSIONS.md) document for more details.
|
||||
|
|
|
|||
|
|
@ -6,15 +6,17 @@ Bundled extensions are located in the `/extensions` folder.
|
|||
|
||||
#### Creating a new extension
|
||||
|
||||
When creating a new extension, import the extension API: `import * as extensionApi from '@podman-desktop/api';`
|
||||
When creating a new extension, import the extension API: `import * as extensionApi from '@podman-desktop/api';`
|
||||
|
||||
All functionality with Podman Desktop is communicated through the `extension-api`. The API is located [here](https://github.com/containers/podman-desktop/blob/main/packages/extension-api/src/extension-api.d.ts).
|
||||
|
||||
When loading an extension, Podman Desktop will:
|
||||
|
||||
1. Search and load the JavaScript file specified in `main` entry of the `package.json` file in the extension directory (typically `extension.js`).
|
||||
2. Run the exported `activate` function.
|
||||
|
||||
When unloading an extension, Podman Desktop will:
|
||||
|
||||
1. Run the (optional) exported `deactivate` function.
|
||||
2. Dispose of any resources that have been added to `extensionContext.subscriptions`, see `deactivateExtension` in [extension-loader.ts](https://github.com/containers/podman-desktop/blob/main/packages/main/src/plugin/extension-loader.ts).
|
||||
|
||||
|
|
@ -25,10 +27,8 @@ This is an example `extensions/foobar/src/extensions.ts` file with the basic `ac
|
|||
```ts
|
||||
import * as extensionApi from '@podman-desktop/api';
|
||||
|
||||
|
||||
// Activate the extension asynchronously
|
||||
export async function activate(extensionContext: extensionApi.ExtensionContext): Promise<void> {
|
||||
|
||||
// Create a provider with an example name, ID and icon
|
||||
const provider = extensionApi.provider.createProvider({
|
||||
name: 'foobar',
|
||||
|
|
@ -57,17 +57,17 @@ Podman Desktop runs each provider via series of statuses from [extension-api](ht
|
|||
#### `ProviderStatus`
|
||||
|
||||
```ts
|
||||
export type ProviderStatus =
|
||||
| 'not-installed'
|
||||
| 'installed'
|
||||
| 'configured'
|
||||
| 'ready'
|
||||
| 'started'
|
||||
| 'stopped'
|
||||
| 'starting'
|
||||
| 'stopping'
|
||||
| 'error'
|
||||
| 'unknown';
|
||||
export type ProviderStatus =
|
||||
| 'not-installed'
|
||||
| 'installed'
|
||||
| 'configured'
|
||||
| 'ready'
|
||||
| 'started'
|
||||
| 'stopped'
|
||||
| 'starting'
|
||||
| 'stopping'
|
||||
| 'error'
|
||||
| 'unknown';
|
||||
```
|
||||
|
||||
`ProviderStatus` supplies information to the main Provider page detailing whether or not that Provider is installed, ready, started, stopped, etc.
|
||||
|
|
@ -82,15 +82,16 @@ This can be updated throughout your extension by calling for example: `provider.
|
|||
export type ProviderConnectionStatus = 'started' | 'stopped' | 'starting' | 'stopping' | 'unknown';
|
||||
```
|
||||
|
||||
> **_NOTE:_** The `unknown` status is unique as it will not show in the extension section of Podman Desktop, it will also not be accessible via API calls. Uknown statuses typically happen when Podman Desktop is unable to load the extension.
|
||||
> **_NOTE:_** The `unknown` status is unique as it will not show in the extension section of Podman Desktop, it will also not be accessible via API calls. Uknown statuses typically happen when Podman Desktop is unable to load the extension.
|
||||
|
||||
`ProviderConnectionStatus` is the main "Lifecycle" of your extension. The status is updated by automatically by Podman Desktop and reflected within the provider.
|
||||
|
||||
Upon a successful start up via the `activate` function within your extension, `ProviderConnectionStatus` will be reflected as 'started'.
|
||||
Upon a successful start up via the `activate` function within your extension, `ProviderConnectionStatus` will be reflected as 'started'.
|
||||
|
||||
`ProviderConnectionStatus` statuses are used in two areas, [extension-loader.ts](https://github.com/containers/podman-desktop/blob/main/packages/main/src/plugin/extension-loader.ts) and [tray-menu.ts](https://github.com/containers/podman-desktop/blob/main/packages/main/src/tray-menu.ts):
|
||||
* `extension-loader.ts`: Attempts to load the extension and sets the status accordingly (either `started`, `stopped`, `starting` or `stopping`). If an unknown error has occured, the status is set to `unknown`. `extension-loader.ts` also sends an API call to Podman Desktop to update the UI of the extension.
|
||||
* `tray-menu.ts`: If `extensionApi.tray.registerMenuItem(item);` API call has been used, a tray menu of the extension will be created. When created, Podman Desktop will use the `ProviderConnectionStatus` to indicate the status within the tray menu.
|
||||
|
||||
- `extension-loader.ts`: Attempts to load the extension and sets the status accordingly (either `started`, `stopped`, `starting` or `stopping`). If an unknown error has occured, the status is set to `unknown`. `extension-loader.ts` also sends an API call to Podman Desktop to update the UI of the extension.
|
||||
- `tray-menu.ts`: If `extensionApi.tray.registerMenuItem(item);` API call has been used, a tray menu of the extension will be created. When created, Podman Desktop will use the `ProviderConnectionStatus` to indicate the status within the tray menu.
|
||||
|
||||
#### Expanding the `extension-api` API
|
||||
|
||||
|
|
@ -101,10 +102,10 @@ In this example, we'll add a new function to simply display: "hello world" in th
|
|||
1. Add the new function to `/packages/extension-api/src/extension-api.d.ts`, under a namespace. This will make it accessible within the API when it's being called within your extension:
|
||||
|
||||
```ts
|
||||
export namespace foobar {
|
||||
// ...
|
||||
export function hello(input: string): void;
|
||||
}
|
||||
export namespace foobar {
|
||||
// ...
|
||||
export function hello(input: string): void;
|
||||
}
|
||||
```
|
||||
|
||||
2. The `packages/main/src/plugin/extension-loader.ts` acts as an extension loader that defines all the actions needed by the API. Modify it to add the main functionality of `hello()` under the `foobar` namespace const:
|
||||
|
|
@ -148,7 +149,7 @@ return <typeof containerDesktopAPI>{
|
|||
```ts
|
||||
export class FoobarClient {
|
||||
hello(input: string) {
|
||||
console.log("hello " + input);
|
||||
console.log('hello ' + input);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
@ -157,7 +158,6 @@ export class FoobarClient {
|
|||
|
||||
```ts
|
||||
export async function activate(extensionContext: extensionApi.ExtensionContext): Promise<void> {
|
||||
|
||||
// Define the provider
|
||||
const provider = extensionApi.provider.createProvider({
|
||||
name: 'foobar',
|
||||
|
|
@ -173,7 +173,6 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
|
|||
extensionContext.subscriptions.push(provider);
|
||||
|
||||
// Call the "hello world" function that'll output to the console
|
||||
extensionContext.foobar.hello("world");
|
||||
extensionContext.foobar.hello('world');
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
50
README.md
50
README.md
|
|
@ -1,5 +1,4 @@
|
|||
Podman Desktop - A graphical tool for developing on containers and Kubernetes
|
||||
---
|
||||
# Podman Desktop - A graphical tool for developing on containers and Kubernetes
|
||||
|
||||
<p align="center">
|
||||
<img alt="Podman Desktop" src="/website/static/img/features/manage-containers.webp">
|
||||
|
|
@ -32,31 +31,37 @@ Check the downloads page on [podman-desktop.io/downloads](https://podman-desktop
|
|||
## Features
|
||||
|
||||
#### Containers and pods dashboard
|
||||
* Build, run, manage, and debug both containers and pods
|
||||
* Run Pods on your container engine or with Kubernetes
|
||||
* Convert your Pods to be running on Kubernetes
|
||||
* Manage multiple container engines
|
||||
|
||||
- Build, run, manage, and debug both containers and pods
|
||||
- Run Pods on your container engine or with Kubernetes
|
||||
- Convert your Pods to be running on Kubernetes
|
||||
- Manage multiple container engines
|
||||
|
||||
#### Multiple container engine support
|
||||
* [Podman container engine](https://github.com/containers/podman)
|
||||
* [crc](https://github.com/code-ready/crc)
|
||||
* [Podman Lima machines](https://github.com/lima-vm/lima)
|
||||
* [Docker](https://github.com/moby/moby)
|
||||
|
||||
- [Podman container engine](https://github.com/containers/podman)
|
||||
- [crc](https://github.com/code-ready/crc)
|
||||
- [Podman Lima machines](https://github.com/lima-vm/lima)
|
||||
- [Docker](https://github.com/moby/moby)
|
||||
|
||||
#### Podman engine update support
|
||||
* Keep `podman` up-to-date on your PC by having Podman Desktop automatically install the newest version
|
||||
|
||||
- Keep `podman` up-to-date on your PC by having Podman Desktop automatically install the newest version
|
||||
|
||||
#### System tray support
|
||||
* Manage your Container engine
|
||||
* Define your Kubernetes context
|
||||
|
||||
- Manage your Container engine
|
||||
- Define your Kubernetes context
|
||||
|
||||
#### Enterprise capabilities
|
||||
* Proxy Support
|
||||
* OCI Image registries management
|
||||
|
||||
- Proxy Support
|
||||
- OCI Image registries management
|
||||
|
||||
#### Bridge between local and remote environments
|
||||
* Connect and deploy to both local or remote Kubernetes environments
|
||||
* Change your Kubernetes context and pick your deployment environment
|
||||
|
||||
- Connect and deploy to both local or remote Kubernetes environments
|
||||
- Change your Kubernetes context and pick your deployment environment
|
||||
|
||||
## Join our early adopter program! (optional)
|
||||
|
||||
|
|
@ -64,7 +69,7 @@ We are seeking developers who are interested in improving Podman Desktop!
|
|||
|
||||
Register your interest to join our Early Adopter Program by filling <a href="https://forms.gle/ow73dV7Ce3YLzoXH7" target="_blank">this form</a>.
|
||||
|
||||
This is totally *optional* and does not change any Podman Desktop features.
|
||||
This is totally _optional_ and does not change any Podman Desktop features.
|
||||
|
||||
## Roadmap
|
||||
|
||||
|
|
@ -75,6 +80,7 @@ Check out all our [future features!](https://github.com/containers/podman-deskto
|
|||
## Contributing
|
||||
|
||||
Interested in fixing issues or contributing to Podman Desktop?
|
||||
|
||||
- :bug: [File bugs or feature requests on GitHub](https://github.com/containers/podman-desktop/issues/new/choose)
|
||||
- :checkered_flag: [Read our contributing guide](./CONTRIBUTING.md)
|
||||
- :ok_hand: [Review or contribute a pull request](https://github.com/containers/podman-desktop/pulls)
|
||||
|
|
@ -89,15 +95,15 @@ Discussions are done using [Github Discussions](https://github.com/containers/po
|
|||
|
||||
General questions & development:
|
||||
|
||||
* [#podman-desktop on the Podman Discord](https://discord.com/invite/x5GzFF6QH4)
|
||||
* [#podman-desktop@libera.chat on IRC](https://libera.chat/)
|
||||
* [#podman-desktop@fedora.im on Matrix](https://chat.fedoraproject.org/#/room/#podman-desktop:fedora.im)
|
||||
- [#podman-desktop on the Podman Discord](https://discord.com/invite/x5GzFF6QH4)
|
||||
- [#podman-desktop@libera.chat on IRC](https://libera.chat/)
|
||||
- [#podman-desktop@fedora.im on Matrix](https://chat.fedoraproject.org/#/room/#podman-desktop:fedora.im)
|
||||
|
||||
Note: All channels are bridged. Chat on either: Discord, IRC or Matrix and it'll appear on all three!
|
||||
|
||||
Kubernetes questions & development:
|
||||
|
||||
* [#podman-desktop](https://app.slack.com/client/T09NY5SBT/C04A0L7LUFM) on the [Kubernetes Slack](https://slack.k8s.io/)
|
||||
- [#podman-desktop](https://app.slack.com/client/T09NY5SBT/C04A0L7LUFM) on the [Kubernetes Slack](https://slack.k8s.io/)
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
|
|
|
|||
22
RELEASE.md
22
RELEASE.md
|
|
@ -1,5 +1,4 @@
|
|||
Release process for Podman Desktop
|
||||
---
|
||||
# Release process for Podman Desktop
|
||||
|
||||
## Pre-requisites
|
||||
|
||||
|
|
@ -26,23 +25,25 @@ In the below example, we will pretend that we're upgrading from `0.11.0` to `0.1
|
|||
## Package manager workflow
|
||||
|
||||
Pre-requisites:
|
||||
|
||||
- Ensure the release is OK (green workflow, artifacts are there https://github.com/containers/podman-desktop/releases)
|
||||
|
||||
#### Brew
|
||||
|
||||
Publish to brew. The workflow will create an automated PR to the brew cask repository https://github.com/Homebrew/homebrew-cask/
|
||||
|
||||
1. Go to https://github.com/containers/podman-desktop/actions/workflows/publish-to-brew.yaml
|
||||
1. Click on the top right drop-down `Run workflow`
|
||||
1. Select the release (under tags), which would be `v0.12.0`
|
||||
1. Enter the release version `0.12.0`. DO NOT add the `v`
|
||||
1. Click `Run workflow`
|
||||
|
||||
You can view the PR at: https://github.com/Homebrew/homebrew-cask/pulls?q=is%3Apr+podman-desktop
|
||||
|
||||
You can view the PR at: https://github.com/Homebrew/homebrew-cask/pulls?q=is%3Apr+podman-desktop
|
||||
|
||||
#### Winget
|
||||
|
||||
Publish to winget. The workflow will create an automated PR to the Winget pkgs repository https://github.com/microsoft/winget-pkgs/
|
||||
|
||||
1. Go to https://github.com/containers/podman-desktop/actions/workflows/publish-to-winget.yaml
|
||||
1. Click on the top right drop-down `Run workflow`
|
||||
1. Select the release (under tags), which would be `v0.12.0`
|
||||
|
|
@ -54,6 +55,7 @@ You can view the PR at: https://github.com/microsoft/winget-pkgs/pulls?q=is%3Apr
|
|||
#### Chocolatey
|
||||
|
||||
Publish to chocolatey. The workflow will create an automatic submission to the chocolatey site at https://community.chocolatey.org/packages/podman-desktop/#versionhistory
|
||||
|
||||
1. Go to https://github.com/containers/podman-desktop/actions/workflows/publish-to-chocolatey.yaml
|
||||
1. Click on the top right drop-down `Run workflow`
|
||||
1. Select the release (under tags), which would be `v0.12.0`
|
||||
|
|
@ -61,7 +63,8 @@ Publish to chocolatey. The workflow will create an automatic submission to the c
|
|||
1. Click `Run workflow`
|
||||
|
||||
Afterwards, you'll have to:
|
||||
* Approve the PR with title `chore: Update Chocolatey package to 0.12.0` at https://github.com/containers/podman-desktop/pulls?q=is%3Apr+Update+Chocolatey
|
||||
|
||||
- Approve the PR with title `chore: Update Chocolatey package to 0.12.0` at https://github.com/containers/podman-desktop/pulls?q=is%3Apr+Update+Chocolatey
|
||||
|
||||
You can view the progress at: https://community.chocolatey.org/packages/podman-desktop/0.12.0
|
||||
|
||||
|
|
@ -80,8 +83,10 @@ You can view the progress at: https://community.chocolatey.org/packages/podman-d
|
|||
```
|
||||
1. Copy the file `$(pwd)/podman-desktop-0.12.0/generated-sources.json` to `generated-sources.json`
|
||||
1. Only commit the files:
|
||||
* `generated-sources.json`
|
||||
* `io.podman_desktop.PodmanDesktop.yml`
|
||||
|
||||
- `generated-sources.json`
|
||||
- `io.podman_desktop.PodmanDesktop.yml`
|
||||
|
||||
1. Create a PR to the repository with a title like `feat: bump to v0.11.0`
|
||||
1. If the PR passes all tests, merge the PR
|
||||
|
||||
|
|
@ -96,6 +101,7 @@ You can view the progress at: https://community.chocolatey.org/packages/podman-d
|
|||
|
||||
1. Create a new announcement at https://github.com/containers/podman-desktop/discussions
|
||||
1. Example template:
|
||||
|
||||
```
|
||||
Hello,
|
||||
|
||||
|
|
@ -120,4 +126,4 @@ An example of a previous post: https://www.reddit.com/r/podman/comments/10moat6/
|
|||
|
||||
1. Send email to devtools-team at redhat.com, Podman-Desktop at redhat.com
|
||||
1. Send email to product-announce at redhat.com (high level)
|
||||
1. Send email to podman-desktop at lists.podman.io (no links to Red Hat internal slack, etc.)
|
||||
1. Send email to podman-desktop at lists.podman.io (no links to Red Hat internal slack, etc.)
|
||||
|
|
|
|||
|
|
@ -4,22 +4,13 @@
|
|||
"module": "esnext",
|
||||
"moduleResolution": "Node",
|
||||
"resolveJsonModule": true,
|
||||
"lib": [
|
||||
"ES2017",
|
||||
"webworker"
|
||||
],
|
||||
"lib": ["ES2017", "webworker"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
},
|
||||
"types": ["node"]
|
||||
},
|
||||
|
||||
"include": [
|
||||
"src",
|
||||
"types/*.d.ts",
|
||||
"../../types/**/*.d.ts"
|
||||
]
|
||||
"include": ["src", "types/*.d.ts", "../../types/**/*.d.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"ES2017",
|
||||
"webworker"
|
||||
],
|
||||
"lib": ["ES2017", "webworker"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,34 +4,19 @@
|
|||
"module": "esnext",
|
||||
"moduleResolution": "Node",
|
||||
"resolveJsonModule": true,
|
||||
"lib": [
|
||||
"ES2017",
|
||||
"webworker"
|
||||
],
|
||||
"lib": ["ES2017", "webworker"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src",
|
||||
"types/*.d.ts",
|
||||
"../../types/**/*.d.ts"
|
||||
],
|
||||
"ts-node": {
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"DOM"
|
||||
],
|
||||
"types": [
|
||||
"node"
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src", "types/*.d.ts", "../../types/**/*.d.ts"],
|
||||
"ts-node": {
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"lib": ["ES2020", "DOM"],
|
||||
"types": ["node"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"ES2017",
|
||||
"webworker"
|
||||
],
|
||||
"lib": ["ES2017", "webworker"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"ES2017",
|
||||
"webworker"
|
||||
],
|
||||
"lib": ["ES2017", "webworker"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,10 +89,10 @@
|
|||
"description": "Image Path (Optional)"
|
||||
},
|
||||
"podman.factory.machine.rootful": {
|
||||
"type": "boolean",
|
||||
"scope": "ContainerProviderConnectionFactory",
|
||||
"description": "Machine with root privileges"
|
||||
}
|
||||
"type": "boolean",
|
||||
"scope": "ContainerProviderConnectionFactory",
|
||||
"description": "Machine with root privileges"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"ES2017",
|
||||
],
|
||||
"lib": ["ES2017"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
|
|
@ -10,23 +8,14 @@
|
|||
"moduleResolution": "Node",
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
],
|
||||
"include": ["src"],
|
||||
"ts-node": {
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"DOM"
|
||||
],
|
||||
"types": [
|
||||
"node"
|
||||
]
|
||||
"lib": ["ES2020", "DOM"],
|
||||
"types": ["node"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "esnext",
|
||||
"lib": [
|
||||
"ES2017",
|
||||
],
|
||||
"lib": ["ES2017"],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
|
|
@ -11,23 +9,14 @@
|
|||
"moduleResolution": "Node",
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node",
|
||||
]
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
],
|
||||
"include": ["src"],
|
||||
"ts-node": {
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"DOM"
|
||||
],
|
||||
"types": [
|
||||
"node"
|
||||
]
|
||||
"lib": ["ES2020", "DOM"],
|
||||
"types": ["node"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,17 +10,12 @@
|
|||
"strict": true,
|
||||
"isolatedModules": true,
|
||||
|
||||
"types" : ["node"],
|
||||
"types": ["node"],
|
||||
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"/@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
},
|
||||
"/@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"../../types/**/*.d.ts"
|
||||
]
|
||||
"include": ["src/**/*.ts", "../../types/**/*.d.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,18 +9,12 @@
|
|||
"allowSyntheticDefaultImports": true,
|
||||
"isolatedModules": true,
|
||||
|
||||
"types" : ["node"],
|
||||
"types": ["node"],
|
||||
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"/@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
"/@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"exposedInDockerExtension.d.ts",
|
||||
"../../types/**/*.d.ts"
|
||||
]
|
||||
"include": ["src/**/*.ts", "exposedInDockerExtension.d.ts", "../../types/**/*.d.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,18 +9,12 @@
|
|||
"allowSyntheticDefaultImports": true,
|
||||
"isolatedModules": true,
|
||||
|
||||
"types" : ["node"],
|
||||
"types": ["node"],
|
||||
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"/@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
"/@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"exposedInMainWorld.d.ts",
|
||||
"../../types/**/*.d.ts"
|
||||
]
|
||||
"include": ["src/**/*.ts", "exposedInMainWorld.d.ts", "../../types/**/*.d.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@
|
|||
"xterm": "^5.2.1",
|
||||
"xterm-addon-fit": "^0.7.0",
|
||||
"yaml": "^2.3.1"
|
||||
|
||||
},
|
||||
"dependencies": {
|
||||
"@zerodevx/svelte-toast": "^0.9.3",
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
/* Disable dragging links elements */
|
||||
/* Disable dragging links elements */
|
||||
a {
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
-webkit-app-region: no-drag;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,12 +37,12 @@
|
|||
.pf-c-nav__link::after {
|
||||
--pf-c-nav__link--after--BorderColor: #8b5cf6;
|
||||
--pf-c-nav__link--m-current--after--BorderColor: #8b5cf6;
|
||||
}
|
||||
}
|
||||
|
||||
.pf-c-tabs__link::after {
|
||||
.pf-c-tabs__link::after {
|
||||
--pf-c-tabs__link--after--BorderColor: #8b5cf6;
|
||||
--pf-c-tabs__link--m-current--after--BorderColor: #8b5cf6;
|
||||
}
|
||||
}
|
||||
|
||||
.pf-c-button {
|
||||
--pf-c-button--FontSize: 13px;
|
||||
|
|
@ -51,5 +51,5 @@
|
|||
.pf-c-button.pf-m-secondary {
|
||||
--pf-c-button--m-secondary--Color: #ddd;
|
||||
--pf-c-button--m-secondary--BackgroundColor: transparent;
|
||||
--pf-c-button--after--BorderColor: rgb(229,231,235);
|
||||
--pf-c-button--after--BorderColor: rgb(229, 231, 235);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,7 @@
|
|||
"preserveValueImports": false,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"/@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
"/@/*": ["./src/*"]
|
||||
},
|
||||
/**
|
||||
* Typecheck JS in `.svelte` and `.js` files by default.
|
||||
|
|
|
|||
|
|
@ -10,17 +10,12 @@
|
|||
"strict": true,
|
||||
"isolatedModules": true,
|
||||
|
||||
"types" : ["node"],
|
||||
"types": ["node"],
|
||||
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"/@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
},
|
||||
"/@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"../types/**/*.d.ts"
|
||||
]
|
||||
"include": ["src/**/*.ts", "../types/**/*.d.ts"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig to read more about this file */
|
||||
|
||||
"target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||
"module": "esnext", /* Specify what module code is generated. */
|
||||
"target": "esnext",
|
||||
"module": "esnext",
|
||||
"moduleResolution": "Node",
|
||||
"sourceMap": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
|
||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"label": "Compose",
|
||||
"position": 6
|
||||
"label": "Compose",
|
||||
"position": 6
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"label": "Getting Started",
|
||||
"position": 3
|
||||
"label": "Getting Started",
|
||||
"position": 3
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue