@equinor/fusion-framework-cli 11.0.0-next.8 → 11.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -94
- package/README.md +98 -104
- package/bin/build/bin.mjs +1 -0
- package/bin/build/cli.mjs +7 -0
- package/bin/cli.mjs +1 -1
- package/dist/esm/lib/app/app-config.js.map +1 -1
- package/dist/esm/lib/app/app-manifest.js.map +1 -1
- package/dist/esm/lib/app/app-package.js +1 -1
- package/dist/esm/lib/app/app-package.js.map +1 -1
- package/dist/esm/lib/app/merge-app-config.js +11 -5
- package/dist/esm/lib/app/merge-app-config.js.map +1 -1
- package/dist/esm/lib/app/merge-app-manifest.js +2 -2
- package/dist/esm/lib/app/merge-app-manifest.js.map +1 -1
- package/dist/esm/lib/index.js +3 -1
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/load-dev-server-config.js +7 -3
- package/dist/esm/lib/load-dev-server-config.js.map +1 -1
- package/dist/esm/lib/merge-dev-server-config.js +24 -16
- package/dist/esm/lib/merge-dev-server-config.js.map +1 -1
- package/dist/esm/lib/portal/create-portal-manifest.js.map +1 -1
- package/dist/esm/lib/portal/load-portal-config.js +1 -1
- package/dist/esm/lib/portal/load-portal-config.js.map +1 -1
- package/dist/esm/lib/portal/load-portal-manifest.js +8 -4
- package/dist/esm/lib/portal/load-portal-manifest.js.map +1 -1
- package/dist/esm/lib/portal/load-portal-schema.js.map +1 -1
- package/dist/esm/lib/portal/portal-config.js.map +1 -1
- package/dist/esm/lib/utils/index.js +1 -0
- package/dist/esm/lib/utils/index.js.map +1 -1
- package/dist/esm/lib/utils/resolve-annotations.js +48 -5
- package/dist/esm/lib/utils/resolve-annotations.js.map +1 -1
- package/dist/esm/lib/utils/resolve-devops-annotations.js +7 -3
- package/dist/esm/lib/utils/resolve-devops-annotations.js.map +1 -1
- package/dist/esm/lib/utils/resolve-git-commit-sha.js +1 -0
- package/dist/esm/lib/utils/resolve-git-commit-sha.js.map +1 -1
- package/dist/esm/lib/utils/resolve-github-annotations.js +16 -72
- package/dist/esm/lib/utils/resolve-github-annotations.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/bin/app-build.d.ts +2 -2
- package/dist/types/bin/app-check.d.ts +2 -2
- package/dist/types/bin/app-config-publish.d.ts +2 -2
- package/dist/types/bin/app-config.d.ts +3 -3
- package/dist/types/bin/app-dev.d.ts +1 -1
- package/dist/types/bin/app-manifest.d.ts +3 -3
- package/dist/types/bin/app-pack.d.ts +1 -1
- package/dist/types/bin/app-tag.d.ts +3 -3
- package/dist/types/bin/app-upload.d.ts +2 -2
- package/dist/types/bin/helpers/load-vite-config.d.ts +1 -2
- package/dist/types/bin/helpers/resolve-app-config.d.ts +3 -3
- package/dist/types/bin/helpers/resolve-app-manifest.d.ts +3 -3
- package/dist/types/bin/helpers/resolve-portal-config.d.ts +3 -3
- package/dist/types/bin/helpers/resolve-portal-manifest.d.ts +3 -4
- package/dist/types/bin/helpers/resolve-project-package.d.ts +2 -2
- package/dist/types/bin/index.d.ts +9 -0
- package/dist/types/bin/pack.d.ts +1 -1
- package/dist/types/bin/portal-build.d.ts +5 -5
- package/dist/types/bin/portal-config-publish.d.ts +2 -2
- package/dist/types/bin/portal-config.d.ts +4 -4
- package/dist/types/bin/portal-dev.d.ts +2 -2
- package/dist/types/bin/portal-manifest.d.ts +4 -4
- package/dist/types/bin/portal-pack.d.ts +3 -3
- package/dist/types/bin/portal-tag.d.ts +2 -2
- package/dist/types/bin/portal-upload.d.ts +2 -2
- package/dist/types/bin/utils/create-dev-server.d.ts +2 -2
- package/dist/types/cli/commands/disco/resolve.d.ts +1 -1
- package/dist/types/cli/main.d.ts +0 -20
- package/dist/types/cli/options/env.d.ts +1 -2
- package/dist/types/lib/app/app-config.d.ts +2 -2
- package/dist/types/lib/app/app-manifest.d.ts +1 -1
- package/dist/types/lib/app/merge-app-config.d.ts +1 -1
- package/dist/types/lib/app/merge-app-manifest.d.ts +1 -1
- package/dist/types/lib/index.d.ts +3 -2
- package/dist/types/lib/legacy.d.ts +1 -1
- package/dist/types/lib/load-dev-server-config.d.ts +2 -2
- package/dist/types/lib/merge-dev-server-config.d.ts +1 -1
- package/dist/types/lib/portal/create-portal-manifest.d.ts +1 -1
- package/dist/types/lib/portal/load-portal-manifest.d.ts +2 -2
- package/dist/types/lib/portal/load-portal-schema.d.ts +1 -1
- package/dist/types/lib/portal/portal-config.d.ts +2 -2
- package/dist/types/lib/portal/portal-manifest.schema.d.ts +6 -6
- package/dist/types/lib/types.d.ts +29 -0
- package/dist/types/lib/utils/index.d.ts +1 -0
- package/dist/types/lib/utils/resolve-annotations.d.ts +35 -1
- package/dist/types/lib/utils/resolve-devops-annotations.d.ts +28 -3
- package/dist/types/lib/utils/resolve-git-commit-sha.d.ts +1 -0
- package/dist/types/lib/utils/resolve-github-annotations.d.ts +85 -13
- package/dist/types/lib/utils/types.d.ts +57 -1
- package/dist/types/version.d.ts +1 -1
- package/docs/application.md +73 -79
- package/docs/auth.md +18 -45
- package/docs/libsecret.md +0 -31
- package/docs/migration-v10-to-v11.md +43 -47
- package/docs/portal.md +4 -38
- package/package.json +69 -33
- package/bin/build/bin.js +0 -28
- package/bin/build/cli.js +0 -10099
- package/bin/build/create-auth-client-B_j4Y_Dr.js +0 -1415
- package/bin/build/portal-config-publish-ezU_DFki.js +0 -29578
- package/dist/esm/bin/app-build.js +0 -34
- package/dist/esm/bin/app-build.js.map +0 -1
- package/dist/esm/bin/app-check.js +0 -63
- package/dist/esm/bin/app-check.js.map +0 -1
- package/dist/esm/bin/app-config-publish.js +0 -89
- package/dist/esm/bin/app-config-publish.js.map +0 -1
- package/dist/esm/bin/app-config.js +0 -48
- package/dist/esm/bin/app-config.js.map +0 -1
- package/dist/esm/bin/app-dev.js +0 -102
- package/dist/esm/bin/app-dev.js.map +0 -1
- package/dist/esm/bin/app-manifest.js +0 -38
- package/dist/esm/bin/app-manifest.js.map +0 -1
- package/dist/esm/bin/app-pack.js +0 -51
- package/dist/esm/bin/app-pack.js.map +0 -1
- package/dist/esm/bin/app-tag.js +0 -89
- package/dist/esm/bin/app-tag.js.map +0 -1
- package/dist/esm/bin/app-upload.js +0 -109
- package/dist/esm/bin/app-upload.js.map +0 -1
- package/dist/esm/bin/helpers/load-bundle-metadata.js +0 -32
- package/dist/esm/bin/helpers/load-bundle-metadata.js.map +0 -1
- package/dist/esm/bin/helpers/load-vite-config.js +0 -55
- package/dist/esm/bin/helpers/load-vite-config.js.map +0 -1
- package/dist/esm/bin/helpers/resolve-app-config.js +0 -46
- package/dist/esm/bin/helpers/resolve-app-config.js.map +0 -1
- package/dist/esm/bin/helpers/resolve-app-manifest.js +0 -55
- package/dist/esm/bin/helpers/resolve-app-manifest.js.map +0 -1
- package/dist/esm/bin/helpers/resolve-portal-config.js +0 -46
- package/dist/esm/bin/helpers/resolve-portal-config.js.map +0 -1
- package/dist/esm/bin/helpers/resolve-portal-manifest.js +0 -55
- package/dist/esm/bin/helpers/resolve-portal-manifest.js.map +0 -1
- package/dist/esm/bin/helpers/resolve-project-package.js +0 -32
- package/dist/esm/bin/helpers/resolve-project-package.js.map +0 -1
- package/dist/esm/bin/index.js +0 -12
- package/dist/esm/bin/index.js.map +0 -1
- package/dist/esm/bin/pack.js +0 -70
- package/dist/esm/bin/pack.js.map +0 -1
- package/dist/esm/bin/portal-build.js +0 -40
- package/dist/esm/bin/portal-build.js.map +0 -1
- package/dist/esm/bin/portal-config-publish.js +0 -74
- package/dist/esm/bin/portal-config-publish.js.map +0 -1
- package/dist/esm/bin/portal-config.js +0 -48
- package/dist/esm/bin/portal-config.js.map +0 -1
- package/dist/esm/bin/portal-dev.js +0 -61
- package/dist/esm/bin/portal-dev.js.map +0 -1
- package/dist/esm/bin/portal-manifest.js +0 -38
- package/dist/esm/bin/portal-manifest.js.map +0 -1
- package/dist/esm/bin/portal-pack.js +0 -60
- package/dist/esm/bin/portal-pack.js.map +0 -1
- package/dist/esm/bin/portal-tag.js +0 -96
- package/dist/esm/bin/portal-tag.js.map +0 -1
- package/dist/esm/bin/portal-upload.js +0 -99
- package/dist/esm/bin/portal-upload.js.map +0 -1
- package/dist/esm/bin/utils/ConsoleLogger.js +0 -112
- package/dist/esm/bin/utils/ConsoleLogger.js.map +0 -1
- package/dist/esm/bin/utils/create-dev-server.js +0 -167
- package/dist/esm/bin/utils/create-dev-server.js.map +0 -1
- package/dist/esm/bin/utils/format.js +0 -47
- package/dist/esm/bin/utils/format.js.map +0 -1
- package/dist/esm/bin/utils/index.js +0 -5
- package/dist/esm/bin/utils/index.js.map +0 -1
- package/dist/esm/bin/utils/spinner.js +0 -142
- package/dist/esm/bin/utils/spinner.js.map +0 -1
- package/dist/esm/cli/commands/app/alias.js +0 -42
- package/dist/esm/cli/commands/app/alias.js.map +0 -1
- package/dist/esm/cli/commands/app/build.js +0 -53
- package/dist/esm/cli/commands/app/build.js.map +0 -1
- package/dist/esm/cli/commands/app/check.js +0 -57
- package/dist/esm/cli/commands/app/check.js.map +0 -1
- package/dist/esm/cli/commands/app/config.js +0 -103
- package/dist/esm/cli/commands/app/config.js.map +0 -1
- package/dist/esm/cli/commands/app/dev.js +0 -67
- package/dist/esm/cli/commands/app/dev.js.map +0 -1
- package/dist/esm/cli/commands/app/index.js +0 -42
- package/dist/esm/cli/commands/app/index.js.map +0 -1
- package/dist/esm/cli/commands/app/manifest.js +0 -82
- package/dist/esm/cli/commands/app/manifest.js.map +0 -1
- package/dist/esm/cli/commands/app/pack.js +0 -71
- package/dist/esm/cli/commands/app/pack.js.map +0 -1
- package/dist/esm/cli/commands/app/publish.js +0 -130
- package/dist/esm/cli/commands/app/publish.js.map +0 -1
- package/dist/esm/cli/commands/app/tag.js +0 -113
- package/dist/esm/cli/commands/app/tag.js.map +0 -1
- package/dist/esm/cli/commands/app/upload.js +0 -85
- package/dist/esm/cli/commands/app/upload.js.map +0 -1
- package/dist/esm/cli/commands/auth/index.js +0 -22
- package/dist/esm/cli/commands/auth/index.js.map +0 -1
- package/dist/esm/cli/commands/auth/login.js +0 -72
- package/dist/esm/cli/commands/auth/login.js.map +0 -1
- package/dist/esm/cli/commands/auth/logout.js +0 -58
- package/dist/esm/cli/commands/auth/logout.js.map +0 -1
- package/dist/esm/cli/commands/auth/token.js +0 -78
- package/dist/esm/cli/commands/auth/token.js.map +0 -1
- package/dist/esm/cli/commands/disco/index.js +0 -6
- package/dist/esm/cli/commands/disco/index.js.map +0 -1
- package/dist/esm/cli/commands/disco/resolve.js +0 -58
- package/dist/esm/cli/commands/disco/resolve.js.map +0 -1
- package/dist/esm/cli/commands/index.js +0 -11
- package/dist/esm/cli/commands/index.js.map +0 -1
- package/dist/esm/cli/commands/portal/build.js +0 -27
- package/dist/esm/cli/commands/portal/build.js.map +0 -1
- package/dist/esm/cli/commands/portal/config.js +0 -101
- package/dist/esm/cli/commands/portal/config.js.map +0 -1
- package/dist/esm/cli/commands/portal/dev.js +0 -27
- package/dist/esm/cli/commands/portal/dev.js.map +0 -1
- package/dist/esm/cli/commands/portal/index.js +0 -23
- package/dist/esm/cli/commands/portal/index.js.map +0 -1
- package/dist/esm/cli/commands/portal/manifest.js +0 -48
- package/dist/esm/cli/commands/portal/manifest.js.map +0 -1
- package/dist/esm/cli/commands/portal/pack.js +0 -40
- package/dist/esm/cli/commands/portal/pack.js.map +0 -1
- package/dist/esm/cli/commands/portal/publish.js +0 -76
- package/dist/esm/cli/commands/portal/publish.js.map +0 -1
- package/dist/esm/cli/commands/portal/schema.js +0 -70
- package/dist/esm/cli/commands/portal/schema.js.map +0 -1
- package/dist/esm/cli/commands/portal/tag.js +0 -73
- package/dist/esm/cli/commands/portal/tag.js.map +0 -1
- package/dist/esm/cli/commands/portal/upload.js +0 -41
- package/dist/esm/cli/commands/portal/upload.js.map +0 -1
- package/dist/esm/cli/main.js +0 -52
- package/dist/esm/cli/main.js.map +0 -1
- package/dist/esm/cli/options/auth.js +0 -96
- package/dist/esm/cli/options/auth.js.map +0 -1
- package/dist/esm/cli/options/env.js +0 -30
- package/dist/esm/cli/options/env.js.map +0 -1
- package/dist/esm/lib/framework.node.js +0 -104
- package/dist/esm/lib/framework.node.js.map +0 -1
- package/dist/esm/version.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/types/{lib → bin}/framework.node.d.ts +0 -0
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Represents the payload structure for various GitHub webhook events.
|
|
3
|
+
*
|
|
4
|
+
* This type covers common fields found in GitHub event payloads, such as push, pull request,
|
|
5
|
+
* workflow, and release events. All properties are optional to accommodate the differences
|
|
6
|
+
* between event types.
|
|
7
|
+
*
|
|
8
|
+
* @remarks only some are mapped to the GitHub API event types.
|
|
9
|
+
*
|
|
10
|
+
* @property after - The SHA of the most recent commit on the ref after the event.
|
|
11
|
+
* @property head_commit - Information about the head commit, including its SHA.
|
|
12
|
+
* @property ref - The Git ref (branch or tag) that triggered the event.
|
|
13
|
+
* @property workflow - The name of the workflow (for workflow-related events).
|
|
14
|
+
* @property action - The action performed (e.g., "opened", "closed", "created").
|
|
15
|
+
* @property repository - Information about the repository where the event occurred.
|
|
16
|
+
* @property pull_request - Details about the pull request (for pull request events).
|
|
17
|
+
* @property release - Details about the release (for release events).
|
|
18
|
+
* @property sender - Information about the user who triggered the event.
|
|
3
19
|
*/
|
|
4
|
-
|
|
20
|
+
type GithubEventPayload = {
|
|
21
|
+
after?: string;
|
|
22
|
+
head_commit?: {
|
|
23
|
+
id?: string;
|
|
24
|
+
};
|
|
25
|
+
ref?: string;
|
|
26
|
+
workflow?: string;
|
|
27
|
+
action?: string;
|
|
28
|
+
repository?: {
|
|
29
|
+
owner?: {
|
|
30
|
+
login?: string;
|
|
31
|
+
avatar_url?: string;
|
|
32
|
+
};
|
|
33
|
+
name?: string;
|
|
34
|
+
license?: {
|
|
35
|
+
name?: string;
|
|
36
|
+
};
|
|
37
|
+
homepage?: string;
|
|
38
|
+
};
|
|
5
39
|
pull_request?: {
|
|
6
40
|
number?: number;
|
|
7
41
|
title?: string;
|
|
8
|
-
user?: {
|
|
9
|
-
login?: string;
|
|
10
|
-
};
|
|
11
42
|
head?: {
|
|
12
43
|
sha?: string;
|
|
13
44
|
ref?: string;
|
|
@@ -16,11 +47,6 @@ export interface GithubEventPayload {
|
|
|
16
47
|
updated_at?: string;
|
|
17
48
|
html_url?: string;
|
|
18
49
|
};
|
|
19
|
-
after?: string;
|
|
20
|
-
head_commit?: {
|
|
21
|
-
id?: string;
|
|
22
|
-
};
|
|
23
|
-
ref?: string;
|
|
24
50
|
release?: {
|
|
25
51
|
tag_name?: string;
|
|
26
52
|
name?: string;
|
|
@@ -31,9 +57,54 @@ export interface GithubEventPayload {
|
|
|
31
57
|
published_at?: string;
|
|
32
58
|
html_url?: string;
|
|
33
59
|
};
|
|
60
|
+
sender?: {
|
|
61
|
+
login?: string;
|
|
62
|
+
avatar_url?: string;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Represents metadata and contextual information related to GitHub Actions workflows,
|
|
67
|
+
* pull requests, commits, releases, and associated actors.
|
|
68
|
+
*
|
|
69
|
+
* @property pull_request - Information about the pull request associated with the workflow run.
|
|
70
|
+
* @property pull_request.number - The pull request number.
|
|
71
|
+
* @property pull_request.title - The title of the pull request.
|
|
72
|
+
* @property pull_request.user - The user who created the pull request.
|
|
73
|
+
* @property pull_request.user.login - The login name of the pull request creator.
|
|
74
|
+
* @property pull_request.head - The head commit information of the pull request.
|
|
75
|
+
* @property pull_request.head.sha - The SHA of the head commit.
|
|
76
|
+
* @property pull_request.head.ref - The reference name of the head commit.
|
|
77
|
+
* @property pull_request.created_at - The creation timestamp of the pull request.
|
|
78
|
+
* @property pull_request.updated_at - The last update timestamp of the pull request.
|
|
79
|
+
* @property pull_request.html_url - The URL to view the pull request on GitHub.
|
|
80
|
+
* @property actor - The GitHub username of the actor who triggered the workflow.
|
|
81
|
+
* @property runId - The unique identifier of the workflow run.
|
|
82
|
+
* @property runUrl - The URL to view the workflow run on GitHub.
|
|
83
|
+
* @property repository - The full name of the repository (e.g., "owner/repo").
|
|
84
|
+
* @property after - The SHA of the commit after the workflow run.
|
|
85
|
+
* @property head_commit - Information about the head commit.
|
|
86
|
+
* @property head_commit.id - The SHA of the head commit.
|
|
87
|
+
* @property ref - The Git reference (e.g., "refs/heads/main").
|
|
88
|
+
* @property release - Information about the release associated with the workflow run.
|
|
89
|
+
* @property release.tag_name - The tag name of the release.
|
|
90
|
+
* @property release.name - The name of the release.
|
|
91
|
+
* @property release.body - The body or description of the release.
|
|
92
|
+
* @property release.draft - Indicates if the release is a draft.
|
|
93
|
+
* @property release.prerelease - Indicates if the release is a prerelease.
|
|
94
|
+
* @property release.created_at - The creation timestamp of the release.
|
|
95
|
+
* @property release.published_at - The publication timestamp of the release.
|
|
96
|
+
* @property release.html_url - The URL to view the release on GitHub.
|
|
97
|
+
* @property workflow - The name of the workflow.
|
|
98
|
+
* @property action - The name of the action being executed.
|
|
99
|
+
*/
|
|
100
|
+
export type GithubAnnotations = GithubEventPayload & {
|
|
34
101
|
workflow?: string;
|
|
35
102
|
action?: string;
|
|
36
|
-
|
|
103
|
+
eventName: string;
|
|
104
|
+
actor?: string;
|
|
105
|
+
runId?: string;
|
|
106
|
+
runUrl?: string;
|
|
107
|
+
};
|
|
37
108
|
/**
|
|
38
109
|
* Resolves GitHub Actions-specific annotation variables from environment variables.
|
|
39
110
|
*
|
|
@@ -50,6 +121,7 @@ export interface GithubEventPayload {
|
|
|
50
121
|
* - GITHUB_REPOSITORY: Repository in the format owner/repo
|
|
51
122
|
* - GITHUB_SERVER_URL: Base URL of the GitHub server (defaults to https://github.com)
|
|
52
123
|
* - GITHUB_EVENT_PATH: Path to the event payload file (JSON)
|
|
124
|
+
* - GITHUB_WORKFLOW: Name of the workflow
|
|
53
125
|
*
|
|
54
126
|
* Notes for maintainers:
|
|
55
127
|
* - The event payload can be large; consider truncating or parsing if only specific fields are needed.
|
|
@@ -61,5 +133,5 @@ export interface GithubEventPayload {
|
|
|
61
133
|
* - To add more annotations, extract additional environment variables as needed and include them in the returned object.
|
|
62
134
|
* - For custom workflows or self-hosted runners, verify that all required environment variables are available.
|
|
63
135
|
*/
|
|
64
|
-
export declare const
|
|
65
|
-
export default
|
|
136
|
+
export declare const resolveGithubAnnotations: () => GithubAnnotations;
|
|
137
|
+
export default resolveGithubAnnotations;
|
|
@@ -1,6 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively makes all properties of a type optional, including nested objects and arrays.
|
|
3
|
+
*
|
|
4
|
+
* - For object types, all properties become optional and the transformation is applied deeply.
|
|
5
|
+
* - For array properties, the transformation is applied to the array's element type.
|
|
6
|
+
* - For primitive types and functions, the type is preserved as-is.
|
|
7
|
+
*
|
|
8
|
+
* This utility is useful for scenarios such as:
|
|
9
|
+
* - Creating deeply partial configuration objects (e.g., for overrides or patch updates)
|
|
10
|
+
* - Accepting partial user input for complex data structures
|
|
11
|
+
* - Safely merging deeply nested objects
|
|
12
|
+
*
|
|
13
|
+
* @template T - The type to make recursively partial.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Simple object
|
|
17
|
+
* type Foo = { a: number; b: { c: string } };
|
|
18
|
+
* // RecursivePartial<Foo> is: { a?: number; b?: { c?: string } }
|
|
19
|
+
*
|
|
20
|
+
* // Object with array
|
|
21
|
+
* type Bar = { items: { id: string; value: number }[] };
|
|
22
|
+
* // RecursivePartial<Bar> is: { items?: Array<{ id?: string; value?: number }> }
|
|
23
|
+
*
|
|
24
|
+
* // Nested and mixed types
|
|
25
|
+
* type Baz = { x: number; y: { z: { w: string[] } } };
|
|
26
|
+
* // RecursivePartial<Baz> is: { x?: number; y?: { z?: { w?: string[] } } }
|
|
27
|
+
*
|
|
28
|
+
* // With primitives and functions
|
|
29
|
+
* type Qux = { cb: () => void; flag: boolean; nested: { n: number } };
|
|
30
|
+
* // RecursivePartial<Qux> is: { cb?: () => void; flag?: boolean; nested?: { n?: number } }
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* - RecursivePartial preserves the original type for primitives, functions, and Date objects.
|
|
34
|
+
* - For union types, each member is transformed recursively.
|
|
35
|
+
* - TypeScript's built-in Partial<T> only makes top-level properties optional; RecursivePartial applies this deeply.
|
|
36
|
+
*
|
|
37
|
+
* @see Partial
|
|
38
|
+
* @see Value
|
|
39
|
+
*/
|
|
1
40
|
export type RecursivePartial<T> = {
|
|
2
41
|
[P in keyof T]?: T[P] extends Array<infer U> ? Array<Value<U>> : Value<T[P]>;
|
|
3
42
|
};
|
|
4
|
-
type
|
|
43
|
+
type AnyFunction = (...args: any[]) => unknown;
|
|
44
|
+
/**
|
|
45
|
+
* Represents the set of primitive types and commonly used types allowed in the framework.
|
|
46
|
+
* Includes function types, booleans, strings, numbers, and Date objects.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* - `AnyFunction` should be defined elsewhere as a type representing any function signature.
|
|
50
|
+
* - Useful for constraining generic types or utility functions to a specific set of primitives.
|
|
51
|
+
*/
|
|
52
|
+
type AllowedPrimitives = AnyFunction | boolean | string | number | Date;
|
|
53
|
+
/**
|
|
54
|
+
* Resolves to the type `T` if it extends `AllowedPrimitives`, otherwise recursively makes all properties of `T` optional.
|
|
55
|
+
*
|
|
56
|
+
* @typeParam T - The type to be evaluated.
|
|
57
|
+
* @remarks
|
|
58
|
+
* This utility type is useful for creating deeply partial versions of complex types,
|
|
59
|
+
* while preserving primitive types as-is.
|
|
60
|
+
*/
|
|
5
61
|
type Value<T> = T extends AllowedPrimitives ? T : RecursivePartial<T>;
|
|
6
62
|
export {};
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "11.0.
|
|
1
|
+
export declare const version = "11.0.1";
|
package/docs/application.md
CHANGED
|
@@ -1,71 +1,10 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Developing Apps with Fusion Framework CLI
|
|
3
|
-
description: >
|
|
4
|
-
In-depth guide to building, configuring, and deploying applications using the Fusion Framework CLI. Includes setup, essential commands, configuration files, CI/CD best practices, troubleshooting, and advanced tips for modern app development.
|
|
5
|
-
category: cli
|
|
6
|
-
related:
|
|
7
|
-
- ./auth.md
|
|
8
|
-
- ./migration-v10-to-v11.md
|
|
9
|
-
tags:
|
|
10
|
-
- getting-started
|
|
11
|
-
- app-development
|
|
12
|
-
- configuration
|
|
13
|
-
- deployment
|
|
14
|
-
- ci-cd
|
|
15
|
-
- commands
|
|
16
|
-
- troubleshooting
|
|
17
|
-
- release-management
|
|
18
|
-
- automation
|
|
19
|
-
- best-practices
|
|
20
|
-
- migration
|
|
21
|
-
keywords:
|
|
22
|
-
- fusion-framework-cli upload
|
|
23
|
-
- fusion-framework-cli publish
|
|
24
|
-
- fusion-framework-cli tag
|
|
25
|
-
- fusion-framework-cli config
|
|
26
|
-
- fusion-framework-cli build
|
|
27
|
-
- fusion-framework-cli pack
|
|
28
|
-
- fusion-framework-cli check
|
|
29
|
-
- fusion-framework-cli manifest
|
|
30
|
-
- fusion-framework-cli troubleshooting
|
|
31
|
-
- fusion-framework-cli deployment
|
|
32
|
-
- fusion-framework-cli ci-cd
|
|
33
|
-
- fusion app upload
|
|
34
|
-
- fusion app publish
|
|
35
|
-
- fusion app tag
|
|
36
|
-
- fusion app config
|
|
37
|
-
- fusion app build
|
|
38
|
-
- fusion app pack
|
|
39
|
-
- fusion app check
|
|
40
|
-
- fusion app manifest
|
|
41
|
-
- fusion app troubleshooting
|
|
42
|
-
- fusion app deployment
|
|
43
|
-
- fusion app ci-cd
|
|
44
|
-
- fusion cli command reference
|
|
45
|
-
- fusion cli options
|
|
46
|
-
- fusion cli arguments
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
# Fusion Framework CLI: Application Development Guide
|
|
50
|
-
|
|
51
|
-
> **Table of Contents**
|
|
52
|
-
> - [Getting Started](#getting-started)
|
|
53
|
-
> - [Prerequisites](#prerequisites)
|
|
54
|
-
> - [Troubleshooting & FAQ](#troubleshooting--faq)
|
|
55
|
-
> - [Configuration](#configuration)
|
|
56
|
-
> - [CI/CD Best Practices](#cicd)
|
|
57
|
-
> - [Command Reference](#commands)
|
|
58
|
-
> - [Migration & Deprecated Commands](#aliases)
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
1
|
The Fusion Framework CLI empowers you to rapidly build, configure, and deploy modern applications with ease. Whether you’re starting a new project or maintaining an existing app, this CLI streamlines your workflow—from local development to production deployment.
|
|
63
2
|
|
|
64
3
|
This guide will help you get set up, understand the most important commands, and follow best practices for configuration and CI/CD. Let’s get started building robust, scalable apps with Fusion Framework!
|
|
65
4
|
|
|
66
5
|
## Getting Started
|
|
67
6
|
|
|
68
|
-
###
|
|
7
|
+
### Install the CLI
|
|
69
8
|
|
|
70
9
|
```sh
|
|
71
10
|
pnpm add -D @equinor/fusion-framework-cli
|
|
@@ -73,7 +12,7 @@ pnpm add -D @equinor/fusion-framework-cli
|
|
|
73
12
|
npm install --save-dev @equinor/fusion-framework-cli
|
|
74
13
|
```
|
|
75
14
|
|
|
76
|
-
###
|
|
15
|
+
### Scaffold a New App (if supported)
|
|
77
16
|
|
|
78
17
|
> **Tip:** If you have a template or starter, clone it. Otherwise, create a new directory and initialize your project as below.
|
|
79
18
|
|
|
@@ -82,7 +21,7 @@ mkdir my-fusion-app && cd my-fusion-app
|
|
|
82
21
|
pnpm init
|
|
83
22
|
```
|
|
84
23
|
|
|
85
|
-
###
|
|
24
|
+
### Create Required Files
|
|
86
25
|
|
|
87
26
|
#### Minimal `package.json` Example
|
|
88
27
|
|
|
@@ -98,6 +37,18 @@ pnpm init
|
|
|
98
37
|
}
|
|
99
38
|
```
|
|
100
39
|
|
|
40
|
+
> **Build Output Configuration:**
|
|
41
|
+
> The CLI uses the `main` field (or `module` field) in your `package.json` to determine where to output the built application bundle. If neither field is specified, it defaults to `./dist/bundle.js`.
|
|
42
|
+
>
|
|
43
|
+
> **Why this approach?** Using the `main`/`module` fields ensures your package works correctly when served directly or when developing portals with internal references. This follows Node.js package conventions and enables proper module resolution.
|
|
44
|
+
>
|
|
45
|
+
> **Important:** The output directory cannot be the project root, the `src` directory, or the current working directory. Always specify a dedicated build directory like `dist/`, `build/`, or similar.
|
|
46
|
+
>
|
|
47
|
+
> **Examples:**
|
|
48
|
+
> - `"main": "dist/index.js"` → outputs to `dist/index.js`
|
|
49
|
+
> - `"module": "build/app.esm.js"` → outputs to `build/app.esm.js`
|
|
50
|
+
> - No `main`/`module` specified → defaults to `dist/bundle.js`
|
|
51
|
+
|
|
101
52
|
#### Example `app.manifest.ts`
|
|
102
53
|
|
|
103
54
|
```ts
|
|
@@ -105,8 +56,8 @@ import { defineAppManifest } from '@equinor/fusion-framework-cli/app';
|
|
|
105
56
|
|
|
106
57
|
export default defineAppManifest(async (env, { base }) => ({
|
|
107
58
|
...base,
|
|
108
|
-
|
|
109
|
-
|
|
59
|
+
appKey: 'my-app',
|
|
60
|
+
displayName: 'My First Awesome Fusion App'
|
|
110
61
|
// Add more manifest fields as needed
|
|
111
62
|
}));
|
|
112
63
|
```
|
|
@@ -128,13 +79,22 @@ export default defineAppConfig((env, args) => ({
|
|
|
128
79
|
}));
|
|
129
80
|
```
|
|
130
81
|
|
|
131
|
-
###
|
|
82
|
+
### Start the Development Server
|
|
132
83
|
|
|
133
84
|
```sh
|
|
134
85
|
pnpm fusion-framework-cli dev
|
|
135
86
|
```
|
|
136
87
|
|
|
137
|
-
###
|
|
88
|
+
### Log in to Fusion Framework (if needed)
|
|
89
|
+
|
|
90
|
+
> [!NOTE]
|
|
91
|
+
> __All HTTP requests to Fusion services require an authorized user.__
|
|
92
|
+
> For example, before running `fusion-framework-cli app publish`, make sure you are authenticated using `fusion-framework-cli auth login`.
|
|
93
|
+
|
|
94
|
+
> [!WARNING]
|
|
95
|
+
> The `fusion-framework-cli auth login` command is only available in interactive environments (such as your local terminal). For CI/CD pipelines or automated deployments, you must provide a valid authentication token using the `FUSION_TOKEN` environment variable.
|
|
96
|
+
>
|
|
97
|
+
> See [Authentication](auth.md#setting-the-fusion-token-in-github) for details on setting up tokens for CI/CD.
|
|
138
98
|
|
|
139
99
|
```sh
|
|
140
100
|
pnpm fusion-framework-cli auth login
|
|
@@ -144,7 +104,7 @@ pnpm fusion-framework-cli auth login
|
|
|
144
104
|
|
|
145
105
|
```sh
|
|
146
106
|
pnpm fusion-framework-cli publish --env <environment>
|
|
147
|
-
pnpm fusion-framework-cli app config --
|
|
107
|
+
pnpm fusion-framework-cli app config --publish --env <environment>
|
|
148
108
|
```
|
|
149
109
|
|
|
150
110
|
> **Tip:** For CI/CD and automation, set the `FUSION_TOKEN` environment variable. See [Authentication](./docs/auth.md) for details.
|
|
@@ -292,11 +252,11 @@ jobs:
|
|
|
292
252
|
- name: Publish application
|
|
293
253
|
run: pnpm exec fusion-framework-cli app upload --env ${{ matrix.env }} app-bundle.zip
|
|
294
254
|
- step: Upload configuration
|
|
295
|
-
run: pnpm exec fusion-framework-cli app config --
|
|
255
|
+
run: pnpm exec fusion-framework-cli app config --publish --env ${{ matrix.env }}
|
|
296
256
|
```
|
|
297
257
|
|
|
298
258
|
> [!TIP]
|
|
299
|
-
> see [setting-the-fusion-token-in-github](
|
|
259
|
+
> see [setting-the-fusion-token-in-github](auth.md#setting-the-fusion-token-in-github) for adding `FUSION_TOKEN` to your environment
|
|
300
260
|
|
|
301
261
|
|
|
302
262
|
### Example: Using Environment Variables in App Config
|
|
@@ -305,7 +265,7 @@ You can use environment variables in your app configuration to inject secrets or
|
|
|
305
265
|
|
|
306
266
|
```yml
|
|
307
267
|
step: Upload configuration
|
|
308
|
-
run: pnpm exec fusion-framework-cli app config --
|
|
268
|
+
run: pnpm exec fusion-framework-cli app config --publish --env ${{ matrix.env }}
|
|
309
269
|
with:
|
|
310
270
|
CONFIG_VALUE_FOO: ${{ VAR.ENVIRONMENT_CONFIG_VALUE }}
|
|
311
271
|
CONFIG_VALUE_BAR: ${{ SECRETS.ENVIRONMENT_CONFIG_SECRET_VALUE }}
|
|
@@ -342,6 +302,7 @@ The Fusion Framework CLI provides a suite of commands to support the full applic
|
|
|
342
302
|
- [Pack](#pack) — Bundle your app into a distributable archive.
|
|
343
303
|
- [Upload](#upload) — Upload your app bundle to the Fusion app store.
|
|
344
304
|
- [Tag](#tag) — Tag a published app version for release management.
|
|
305
|
+
- [Manifest](#manifest) — Generate your app manifest file.
|
|
345
306
|
- [Check](#check) — Verify your app's registration status.
|
|
346
307
|
- [Aliases](#aliases) — Deprecated commands and their replacements.
|
|
347
308
|
|
|
@@ -383,7 +344,7 @@ Publish your application to the Fusion app store (registry) for deployment. This
|
|
|
383
344
|
| ------------------ | --------------------------------------------------------------------------------------------------- | ----------------- |
|
|
384
345
|
| `[bundle]` | Path to the app bundle to upload. If omitted, the CLI will build and bundle your app automatically. | |
|
|
385
346
|
| `-e`, `--env` | Target environment for deployment (e.g., `ci`, `fqa`, `fprd`). | |
|
|
386
|
-
| `-m`, `--manifest` | Manifest file to use for bundling (e.g., `app.manifest.ts`).
|
|
347
|
+
| `-m`, `--manifest` | Manifest file to use for bundling (e.g., `app.manifest.ts`) (optional). | `app.manifest.ts` |
|
|
387
348
|
| `-t`, `--tag` | Tag to apply to the published app (`latest` \| `preview`). | `latest` |
|
|
388
349
|
| `-d`, `--debug` | Enable debug mode for verbose logging. | `false` |
|
|
389
350
|
| `--token` | Authentication token for Fusion. | |
|
|
@@ -474,6 +435,14 @@ pnpm fusion-framework-cli build
|
|
|
474
435
|
pnpm fusion-framework-cli build app.manifest.dev.ts --debug
|
|
475
436
|
```
|
|
476
437
|
|
|
438
|
+
> [!NOTE]
|
|
439
|
+
> The build output location is determined by the `main` field (or `module` field) in your `package.json`. If neither field is specified, the CLI defaults to `./dist/bundle.js`. This approach ensures your package works correctly when served directly or when developing portals with internal references, following Node.js package conventions for proper module resolution. The output directory cannot be the project root, the `src` directory, or the current working directory.
|
|
440
|
+
>
|
|
441
|
+
> **Examples:**
|
|
442
|
+
> - `"main": "dist/index.js"` → builds to `dist/index.js`
|
|
443
|
+
> - `"module": "build/app.esm.js"` → builds to `build/app.esm.js`
|
|
444
|
+
> - No `main`/`module` specified → defaults to `dist/bundle.js`
|
|
445
|
+
|
|
477
446
|
### Pack
|
|
478
447
|
|
|
479
448
|
Build a distributable app bundle archive for deployment.
|
|
@@ -562,17 +531,42 @@ pnpm fusion-framework-cli app tag <tag> [options]
|
|
|
562
531
|
```sh
|
|
563
532
|
pnpm fusion-framework-cli app tag latest
|
|
564
533
|
pnpm fusion-framework-cli app tag preview --env prod --manifest app.manifest.prod.ts
|
|
565
|
-
pnpm fusion-framework-cli app tag
|
|
534
|
+
pnpm fusion-framework-cli app tag latest --appKey my-app --version 1.2.3
|
|
566
535
|
```
|
|
567
536
|
|
|
568
537
|
> [!TIP] You can roll back a release by tagging a previous build as `latest`. Simply run the tag command with the desired version to make it the active release for deployment.
|
|
569
538
|
|
|
570
539
|
> [!NOTE]
|
|
571
540
|
> - The `tag` command requires a published application version. You can specify the app key and version directly, or let the CLI resolve them from your manifest file.
|
|
572
|
-
> - Supported tags are: `latest
|
|
541
|
+
> - Supported tags are: `latest` and `preview`.
|
|
573
542
|
> - Authentication options (`--token`, `--tenantId`, `--clientId`) can be set via CLI flags or environment variables.
|
|
574
543
|
> - If tagging fails, an error will be logged and the process will exit with a non-zero code.
|
|
575
544
|
|
|
545
|
+
### Manifest
|
|
546
|
+
|
|
547
|
+
Generate and output your application manifest for Fusion apps.
|
|
548
|
+
|
|
549
|
+
| Option/Argument | Description | Default / Example |
|
|
550
|
+
| --------------------- | -------------------------------------------------------------------------- | ----------------- |
|
|
551
|
+
| `[manifest]` | Manifest build file to use (e.g., `app.manifest[.env]?.[ts,js,json]`). | `app.manifest.ts` |
|
|
552
|
+
| `-d, --debug` | Enable debug mode for verbose logging. | `false` |
|
|
553
|
+
| `-o, --output <path>` | Write manifest to the specified file (default: stdout). | `stdout` |
|
|
554
|
+
| `-s, --silent` | Silent mode, suppresses output except errors. | `false` |
|
|
555
|
+
|
|
556
|
+
**Usage:**
|
|
557
|
+
```sh
|
|
558
|
+
pnpm fusion-framework-cli app manifest [manifest] [options]
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
**Examples:**
|
|
562
|
+
```sh
|
|
563
|
+
pnpm fusion-framework-cli app manifest
|
|
564
|
+
pnpm fusion-framework-cli app manifest app.manifest.prod.ts --output ./dist/app.manifest.json
|
|
565
|
+
pnpm fusion-framework-cli app manifest --debug
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
> **Tip:** By default, the manifest is printed to stdout. Use `--output` to write it to a file for use in CI/CD pipelines or for inspection.
|
|
569
|
+
|
|
576
570
|
### Check
|
|
577
571
|
|
|
578
572
|
Check if a Fusion application is registered in the Fusion app store (registry).
|
|
@@ -634,11 +628,11 @@ pnpm fusion-framework-cli build-pack
|
|
|
634
628
|
|
|
635
629
|
> [!WARNING]
|
|
636
630
|
> The deprecated commands will be removed in future versions. Please update your scripts and workflows to use the new command names (`pack`, `upload`, `manifest`, `publish`) to ensure compatibility with v11 and beyond.
|
|
637
|
-
> For a full migration guide, see [Migration v10 to v11](
|
|
631
|
+
> For a full migration guide, see [Migration v10 to v11](migration-v10-to-v11.md).
|
|
638
632
|
|
|
639
633
|
---
|
|
640
634
|
|
|
641
635
|
> **Need more examples?**
|
|
642
|
-
> - See the [cookbooks
|
|
643
|
-
> - For migration help, see [Migration v10 to v11](
|
|
644
|
-
> - For advanced configuration, see [Authentication](
|
|
636
|
+
> - See the [cookbooks directory in the GitHub repository](https://github.com/equinor/fusion-framework/tree/main/cookbooks) for real-world app examples.
|
|
637
|
+
> - For migration help, see [Migration v10 to v11](migration-v10-to-v11.md).
|
|
638
|
+
> - For advanced configuration, see [Authentication](auth.md) and [CI/CD](#ci-cd).
|
package/docs/auth.md
CHANGED
|
@@ -1,49 +1,6 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Fusion Framework CLI - Authorization
|
|
3
|
-
description: >
|
|
4
|
-
Comprehensive guide to authentication and authorization in the Fusion Framework CLI, covering Azure AD, MSAL, local development, CI/CD, service principals, and best practices for secure automation and integration.
|
|
5
|
-
category: cli
|
|
6
|
-
related:
|
|
7
|
-
- '@equinor/fusion-framework-module-msal-node/README.md'
|
|
8
|
-
tags:
|
|
9
|
-
- cli
|
|
10
|
-
- fusion-framework
|
|
11
|
-
- msal
|
|
12
|
-
- azure
|
|
13
|
-
- azure-ad
|
|
14
|
-
- authentication
|
|
15
|
-
- authorization
|
|
16
|
-
- service-principal
|
|
17
|
-
- github-actions
|
|
18
|
-
- ci
|
|
19
|
-
- cd
|
|
20
|
-
- devops
|
|
21
|
-
- security
|
|
22
|
-
keywords:
|
|
23
|
-
- azure ad
|
|
24
|
-
- msal
|
|
25
|
-
- access token
|
|
26
|
-
- authentication flow
|
|
27
|
-
- interactive login
|
|
28
|
-
- silent authentication
|
|
29
|
-
- token caching
|
|
30
|
-
- secure storage
|
|
31
|
-
- app registration
|
|
32
|
-
- tenant id
|
|
33
|
-
- client id
|
|
34
|
-
- scopes
|
|
35
|
-
- api permissions
|
|
36
|
-
- oidc
|
|
37
|
-
- sso
|
|
38
|
-
- cloud identity
|
|
39
|
-
- developer experience
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
# Authentication with Fusion Framework CLI
|
|
43
|
-
|
|
44
1
|
The Fusion Framework CLI provides secure, robust authentication for both automation and interactive development scenarios by leveraging Microsoft's MSAL (Microsoft Authentication Library) and Azure Active Directory (Azure AD). Authentication is handled through the Fusion Framework for Node.js, using the `@equinor/fusion-framework-module-msal-node` package, which is built on top of Microsoft's official `msal-node` library. This ensures standards-compliant, up-to-date authentication flows and seamless integration across Fusion Framework applications and tools.
|
|
45
2
|
|
|
46
|
-
Key features
|
|
3
|
+
## Key features
|
|
47
4
|
- **Multiple authentication modes:**
|
|
48
5
|
- `token_only`: Use a pre-provided token (e.g., for CI/CD and automation).
|
|
49
6
|
- `silent`: Acquire tokens silently using cached or refresh tokens (background services, scripts).
|
|
@@ -75,7 +32,7 @@ When configuring authentication for the Fusion Framework CLI, you will encounter
|
|
|
75
32
|
|
|
76
33
|
## Local Development
|
|
77
34
|
|
|
78
|
-
###
|
|
35
|
+
### Login in with the CLI
|
|
79
36
|
|
|
80
37
|
For local development, you should authenticate interactively using the CLI's built-in login command. This uses the `interactive` authentication mode, which will prompt you to sign in via your browser and securely store your credentials for future CLI commands.
|
|
81
38
|
|
|
@@ -113,6 +70,22 @@ The CLI provides several authentication-related options for advanced scenarios o
|
|
|
113
70
|
|
|
114
71
|
These options allow you to use the CLI with custom tenants, client apps, or tokens if needed, but for most development scenarios, the built-in defaults are sufficient and only the `--scope` option is commonly changed. This flexibility supports both simple and advanced authentication needs, making it easy to get started while enabling custom setups for more complex environments.
|
|
115
72
|
|
|
73
|
+
### Acquiring token
|
|
74
|
+
|
|
75
|
+
The `auth token` command is designed to show your access token for the current user.
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
fusion-framework-cli auth token
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> [!TIP]
|
|
82
|
+
> The `--silent` flag outputs only the token (no extra logging), which is useful for exporting the token as an environment variable or saving it to a file for local testing or scripting:
|
|
83
|
+
> ```sh
|
|
84
|
+
> export FUSION_TOKEN=$(fusion-framework-cli auth token --silent)
|
|
85
|
+
> ```
|
|
86
|
+
|
|
87
|
+
> [!Note] This command requires an interactive user context and MSAL Node. It is not suitable for CI/CD environments, as there is no user available in those scenarios. Use it for local development, testing, or whenever you need to preserve a Fusion token for your own scripts or tools.
|
|
88
|
+
|
|
116
89
|
## CI/CD
|
|
117
90
|
|
|
118
91
|
### Setting the Fusion Token in GitHub
|
package/docs/libsecret.md
CHANGED
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Enabling Secure Credential Storage with libsecret
|
|
3
|
-
description: Instructions for installing libsecret on Linux to enable secure credential storage for your CLI.
|
|
4
|
-
tags:
|
|
5
|
-
- cli
|
|
6
|
-
- authentication
|
|
7
|
-
- keytar
|
|
8
|
-
- libsecret
|
|
9
|
-
- linux
|
|
10
|
-
- security
|
|
11
|
-
- credentials
|
|
12
|
-
- msal
|
|
13
|
-
- nodejs
|
|
14
|
-
- keychain
|
|
15
|
-
keywords:
|
|
16
|
-
- secure credential storage
|
|
17
|
-
- keychain
|
|
18
|
-
- linux
|
|
19
|
-
- node.js
|
|
20
|
-
- password manager
|
|
21
|
-
- system keyring
|
|
22
|
-
- msal-node
|
|
23
|
-
- credential storage
|
|
24
|
-
- cross-platform
|
|
25
|
-
- token caching
|
|
26
|
-
- npm
|
|
27
|
-
- secrets
|
|
28
|
-
- cli authentication
|
|
29
|
-
- keytar troubleshooting
|
|
30
|
-
---
|
|
31
|
-
|
|
32
1
|
This CLI enables secure authentication and persistent token caching by storing credentials in your system's keychain. It uses [`@azure/msal-node`](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node) for authentication, which relies on the [`keytar`](https://github.com/atom/node-keytar) module for secure credential storage.
|
|
33
2
|
|
|
34
3
|
> **What is `libsecret`?**
|