@equinor/fusion-framework-cli 14.0.2 → 14.1.0
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 +28 -0
- package/bin/build/bin.mjs +1 -1
- package/bin/build/cli.mjs +3 -3
- package/dist/esm/lib/utils/resolve-annotations.js +22 -3
- package/dist/esm/lib/utils/resolve-annotations.js.map +1 -1
- package/dist/esm/lib/utils/resolve-git-branch.js +18 -0
- package/dist/esm/lib/utils/resolve-git-branch.js.map +1 -0
- package/dist/esm/lib/utils/tests/resolve-annotations.test.js +153 -0
- package/dist/esm/lib/utils/tests/resolve-annotations.test.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/bin/utils/format-auth-error.d.ts +37 -0
- package/dist/types/bin/utils/index.d.ts +1 -0
- package/dist/types/lib/utils/resolve-git-branch.d.ts +8 -0
- package/dist/types/lib/utils/tests/resolve-annotations.test.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +6 -6
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { resolveGithubAnnotations } from './resolve-github-annotations.js';
|
|
2
2
|
import { resolveDevopsAnnotations } from './resolve-devops-annotations.js';
|
|
3
|
+
import { resolveGitBranch } from './resolve-git-branch.js';
|
|
3
4
|
import { version } from '../../version.js';
|
|
5
|
+
/**
|
|
6
|
+
* Extracts a branch name from a GitHub ref when the ref points to a branch.
|
|
7
|
+
*
|
|
8
|
+
* GitHub exposes refs like `refs/heads/main` for push events and `refs/tags/v1.0.0`
|
|
9
|
+
* for tag/release events. Only branch refs should populate the manifest branch annotation.
|
|
10
|
+
*/
|
|
11
|
+
const resolveGithubBranch = (ref) => {
|
|
12
|
+
if (!ref?.startsWith('refs/heads/')) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return ref.slice('refs/heads/'.length) || undefined;
|
|
16
|
+
};
|
|
4
17
|
/**
|
|
5
18
|
* Resolves CI/CD environment-specific annotation variables.
|
|
6
19
|
*
|
|
@@ -20,7 +33,7 @@ export const resolveAnnotations = () => {
|
|
|
20
33
|
};
|
|
21
34
|
// Check if running in GitHub Actions environment
|
|
22
35
|
// If so, delegate to the GitHub-specific annotation resolver
|
|
23
|
-
if (process.env.GITHUB_ACTIONS) {
|
|
36
|
+
if (process.env.GITHUB_ACTIONS === 'true') {
|
|
24
37
|
const annotation = resolveGithubAnnotations();
|
|
25
38
|
const baseAnnotations = {
|
|
26
39
|
...requiredAnnotations,
|
|
@@ -54,7 +67,10 @@ export const resolveAnnotations = () => {
|
|
|
54
67
|
htmlUrl: annotation.release.html_url,
|
|
55
68
|
};
|
|
56
69
|
}
|
|
57
|
-
return
|
|
70
|
+
return {
|
|
71
|
+
...baseAnnotations,
|
|
72
|
+
branch: resolveGithubBranch(annotation.ref ?? process.env.GITHUB_REF),
|
|
73
|
+
};
|
|
58
74
|
}
|
|
59
75
|
// Check if running in Azure DevOps environment
|
|
60
76
|
// If so, delegate to the Azure DevOps-specific annotation resolver
|
|
@@ -75,6 +91,9 @@ export const resolveAnnotations = () => {
|
|
|
75
91
|
}
|
|
76
92
|
// Fallback: No known CI/CD environment detected
|
|
77
93
|
// Return required annotations indicating local build
|
|
78
|
-
return
|
|
94
|
+
return {
|
|
95
|
+
...requiredAnnotations,
|
|
96
|
+
branch: resolveGitBranch(),
|
|
97
|
+
};
|
|
79
98
|
};
|
|
80
99
|
//# sourceMappingURL=resolve-annotations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-annotations.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAuC3C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAuB,EAAE;IACzD,oCAAoC;IACpC,MAAM,mBAAmB,GAAG;QAC1B,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEF,iDAAiD;IACjD,6DAA6D;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-annotations.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAuC3C;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAsB,EAAE;IAC/D,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAuB,EAAE;IACzD,oCAAoC;IACpC,MAAM,mBAAmB,GAAG;QAC1B,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEF,iDAAiD;IACjD,6DAA6D;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG;YACtB,GAAG,mBAAmB;YACtB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU,CAAC,SAAS;YAC5B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE;YACpC,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI;YACvC,mBAAmB,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ;YACpD,kBAAkB,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI;YACxD,gBAAgB,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;YACrD,2BAA2B,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU;YACrE,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,YAAY,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK;YACtC,iBAAiB,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU;SACpB,CAAC;QAE/B,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,eAAe;gBAClB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG;gBACzC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG;gBAC3C,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ;aACb,CAAC;QACjC,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;gBACL,GAAG,eAAe;gBAClB,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;gBAChC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;aACR,CAAC;QACjC,CAAC;QAED,OAAO;YACL,GAAG,eAAe;YAClB,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;SACzC,CAAC;IACjC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IACnE,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,wBAAwB,EAAE,CAAC;QAC/C,OAAO;YACL,GAAG,mBAAmB;YACtB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,YAAY;SACN,CAAC;IACjC,CAAC;IAED,gDAAgD;IAChD,qDAAqD;IACrD,OAAO;QACL,GAAG,mBAAmB;QACtB,MAAM,EAAE,gBAAgB,EAAE;KACE,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the current Git branch for the working tree.
|
|
4
|
+
*
|
|
5
|
+
* @returns The current branch name, or `undefined` when not in a Git repository
|
|
6
|
+
* or when HEAD is detached.
|
|
7
|
+
*/
|
|
8
|
+
export const resolveGitBranch = () => {
|
|
9
|
+
try {
|
|
10
|
+
const branch = execSync('git branch --show-current').toString().trim();
|
|
11
|
+
return branch || undefined;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export default resolveGitBranch;
|
|
18
|
+
//# sourceMappingURL=resolve-git-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-git-branch.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-git-branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAuB,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACvE,OAAO,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { version } from '../../../version.js';
|
|
3
|
+
vi.mock('../resolve-github-annotations.js', () => ({
|
|
4
|
+
resolveGithubAnnotations: vi.fn(),
|
|
5
|
+
}));
|
|
6
|
+
vi.mock('../resolve-devops-annotations.js', () => ({
|
|
7
|
+
resolveDevopsAnnotations: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
vi.mock('../resolve-git-branch.js', () => ({
|
|
10
|
+
resolveGitBranch: vi.fn(),
|
|
11
|
+
}));
|
|
12
|
+
import { resolveAnnotations } from '../resolve-annotations.js';
|
|
13
|
+
import { resolveGithubAnnotations } from '../resolve-github-annotations.js';
|
|
14
|
+
import { resolveDevopsAnnotations } from '../resolve-devops-annotations.js';
|
|
15
|
+
import { resolveGitBranch } from '../resolve-git-branch.js';
|
|
16
|
+
const mockResolveGithubAnnotations = vi.mocked(resolveGithubAnnotations);
|
|
17
|
+
const mockResolveDevopsAnnotations = vi.mocked(resolveDevopsAnnotations);
|
|
18
|
+
const mockResolveGitBranch = vi.mocked(resolveGitBranch);
|
|
19
|
+
describe('resolveAnnotations', () => {
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
vi.unstubAllEnvs();
|
|
22
|
+
vi.clearAllMocks();
|
|
23
|
+
vi.stubEnv('GITHUB_ACTIONS', 'false');
|
|
24
|
+
});
|
|
25
|
+
it('includes the current branch for local builds', () => {
|
|
26
|
+
mockResolveGitBranch.mockReturnValue('feature/local-branch');
|
|
27
|
+
expect(resolveAnnotations()).toEqual({
|
|
28
|
+
cliVersion: version,
|
|
29
|
+
source: 'local',
|
|
30
|
+
reason: 'manual',
|
|
31
|
+
branch: 'feature/local-branch',
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
it('should have undefined branch for local builds outside git', () => {
|
|
35
|
+
mockResolveGitBranch.mockReturnValue(undefined);
|
|
36
|
+
expect(resolveAnnotations()).toEqual({
|
|
37
|
+
cliVersion: version,
|
|
38
|
+
source: 'local',
|
|
39
|
+
reason: 'manual',
|
|
40
|
+
branch: undefined,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it('keeps pull request branch resolution in GitHub Actions', () => {
|
|
44
|
+
vi.stubEnv('GITHUB_ACTIONS', 'true');
|
|
45
|
+
mockResolveGithubAnnotations.mockReturnValue({
|
|
46
|
+
eventName: 'pull_request',
|
|
47
|
+
workflow: 'test-workflow',
|
|
48
|
+
runId: '123',
|
|
49
|
+
runUrl: 'https://github.com/org/repo/actions/runs/123',
|
|
50
|
+
actor: 'octocat',
|
|
51
|
+
sender: { login: 'octocat', avatar_url: 'https://avatars.githubusercontent.com/u/1' },
|
|
52
|
+
repository: {
|
|
53
|
+
name: 'repo',
|
|
54
|
+
homepage: 'https://repo.example.com',
|
|
55
|
+
license: { name: 'MIT' },
|
|
56
|
+
owner: { login: 'org', avatar_url: 'https://avatars.githubusercontent.com/u/2' },
|
|
57
|
+
},
|
|
58
|
+
head_commit: { id: 'head-commit' },
|
|
59
|
+
pull_request: {
|
|
60
|
+
head: { ref: 'feature/pr-branch', sha: 'pr-sha' },
|
|
61
|
+
html_url: 'https://github.com/org/repo/pull/1',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
expect(resolveAnnotations()).toMatchObject({
|
|
65
|
+
cliVersion: version,
|
|
66
|
+
source: 'github',
|
|
67
|
+
reason: 'pull_request',
|
|
68
|
+
workflow: 'test-workflow',
|
|
69
|
+
runId: '123',
|
|
70
|
+
runUrl: 'https://github.com/org/repo/actions/runs/123',
|
|
71
|
+
actor: 'octocat',
|
|
72
|
+
sender_login: 'octocat',
|
|
73
|
+
branch: 'feature/pr-branch',
|
|
74
|
+
commitId: 'pr-sha',
|
|
75
|
+
htmlUrl: 'https://github.com/org/repo/pull/1',
|
|
76
|
+
repository: 'repo',
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
it('extracts branch from GitHub push refs', () => {
|
|
80
|
+
vi.stubEnv('GITHUB_ACTIONS', 'true');
|
|
81
|
+
vi.stubEnv('GITHUB_REF', 'refs/heads/main');
|
|
82
|
+
mockResolveGithubAnnotations.mockReturnValue({
|
|
83
|
+
eventName: 'push',
|
|
84
|
+
workflow: 'build',
|
|
85
|
+
runId: '456',
|
|
86
|
+
runUrl: 'https://github.com/org/repo/actions/runs/456',
|
|
87
|
+
actor: 'octocat',
|
|
88
|
+
head_commit: { id: 'push-sha' },
|
|
89
|
+
repository: { name: 'repo' },
|
|
90
|
+
});
|
|
91
|
+
expect(resolveAnnotations()).toMatchObject({
|
|
92
|
+
cliVersion: version,
|
|
93
|
+
source: 'github',
|
|
94
|
+
reason: 'push',
|
|
95
|
+
branch: 'main',
|
|
96
|
+
commitId: 'push-sha',
|
|
97
|
+
repository: 'repo',
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
it('does not treat tag refs as branches in GitHub Actions', () => {
|
|
101
|
+
vi.stubEnv('GITHUB_ACTIONS', 'true');
|
|
102
|
+
vi.stubEnv('GITHUB_REF', 'refs/tags/v1.0.0');
|
|
103
|
+
mockResolveGithubAnnotations.mockReturnValue({
|
|
104
|
+
eventName: 'release',
|
|
105
|
+
workflow: 'release',
|
|
106
|
+
runId: '789',
|
|
107
|
+
runUrl: 'https://github.com/org/repo/actions/runs/789',
|
|
108
|
+
actor: 'octocat',
|
|
109
|
+
repository: { name: 'repo' },
|
|
110
|
+
release: {
|
|
111
|
+
tag_name: 'v1.0.0',
|
|
112
|
+
html_url: 'https://github.com/org/repo/releases/tag/v1.0.0',
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
const annotations = resolveAnnotations();
|
|
116
|
+
expect(annotations).toMatchObject({
|
|
117
|
+
cliVersion: version,
|
|
118
|
+
source: 'github',
|
|
119
|
+
reason: 'release',
|
|
120
|
+
tag: 'v1.0.0',
|
|
121
|
+
htmlUrl: 'https://github.com/org/repo/releases/tag/v1.0.0',
|
|
122
|
+
});
|
|
123
|
+
expect(annotations.branch).toBeUndefined();
|
|
124
|
+
});
|
|
125
|
+
it('passes through Azure DevOps branch annotations', () => {
|
|
126
|
+
vi.stubEnv('SYSTEM_TEAMPROJECT', 'fusion');
|
|
127
|
+
mockResolveDevopsAnnotations.mockReturnValue({
|
|
128
|
+
reason: 'Manual',
|
|
129
|
+
repository: 'fusion-framework',
|
|
130
|
+
project: 'fusion',
|
|
131
|
+
orgUrl: 'https://dev.azure.com/org/',
|
|
132
|
+
runId: '42',
|
|
133
|
+
runUrl: 'https://dev.azure.com/org/project/_build/results?buildId=42',
|
|
134
|
+
actor: 'devops-username',
|
|
135
|
+
branch: 'refs/heads/main',
|
|
136
|
+
commitId: 'devops-sha',
|
|
137
|
+
pipelineName: 'build-app',
|
|
138
|
+
});
|
|
139
|
+
expect(resolveAnnotations()).toEqual({
|
|
140
|
+
cliVersion: version,
|
|
141
|
+
source: 'azure_devops',
|
|
142
|
+
reason: 'Manual',
|
|
143
|
+
repository: 'fusion-framework',
|
|
144
|
+
runId: '42',
|
|
145
|
+
runUrl: 'https://dev.azure.com/org/project/_build/results?buildId=42',
|
|
146
|
+
actor: 'devops-username',
|
|
147
|
+
branch: 'refs/heads/main',
|
|
148
|
+
commitId: 'devops-sha',
|
|
149
|
+
workflow: 'build-app',
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=resolve-annotations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-annotations.test.js","sourceRoot":"","sources":["../../../../../src/lib/utils/tests/resolve-annotations.test.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats an HTTP 401 or 403 response into a clear, actionable CLI error message.
|
|
3
|
+
*
|
|
4
|
+
* Returns `undefined` for status codes that are not auth-related so callers
|
|
5
|
+
* can fall through to their existing error handling.
|
|
6
|
+
*
|
|
7
|
+
* @param status - The HTTP response status code.
|
|
8
|
+
* @param context - A short, human-readable description of the failed operation
|
|
9
|
+
* (e.g. `"upload bundle for my-app"`, `"tag my-app@1.0.0"`).
|
|
10
|
+
* @returns A formatted error string, or `undefined` if the status is not 401/403.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const msg = formatAuthError(401, 'upload bundle for my-app');
|
|
15
|
+
* if (msg) {
|
|
16
|
+
* log.error(msg);
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatAuthError(status: number, context: string): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Detects whether an error is (or wraps) an authentication/authorization failure.
|
|
23
|
+
*
|
|
24
|
+
* Checks for:
|
|
25
|
+
* - `SilentTokenAcquisitionError` (MSAL token refresh failure)
|
|
26
|
+
* - HTTP response errors with 401/403 status (including `HttpJsonResponseError`
|
|
27
|
+
* from the JSON selector when a service returns an auth error page)
|
|
28
|
+
* - Errors whose cause chain contains one of the above
|
|
29
|
+
*
|
|
30
|
+
* Returns `undefined` when the error is not auth-related, so callers can
|
|
31
|
+
* fall through to generic error handling.
|
|
32
|
+
*
|
|
33
|
+
* @param error - The caught error value.
|
|
34
|
+
* @param context - A short description of the failed operation (e.g. `"check registration for my-app"`).
|
|
35
|
+
* @returns A formatted error string, or `undefined` if the error is not an auth failure.
|
|
36
|
+
*/
|
|
37
|
+
export declare function formatTokenAcquisitionError(error: unknown, context: string): string | undefined;
|
|
@@ -12,3 +12,4 @@ export { Spinner } from './spinner.js';
|
|
|
12
12
|
export { ConsoleLogger } from './ConsoleLogger.js';
|
|
13
13
|
export { createDevServerConfig, createDevServer, type CreateDevServerOptions, } from './create-dev-server.js';
|
|
14
14
|
export { defaultHeaders } from './defaultHeaders.js';
|
|
15
|
+
export { formatAuthError, formatTokenAcquisitionError } from './format-auth-error.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the current Git branch for the working tree.
|
|
3
|
+
*
|
|
4
|
+
* @returns The current branch name, or `undefined` when not in a Git repository
|
|
5
|
+
* or when HEAD is detached.
|
|
6
|
+
*/
|
|
7
|
+
export declare const resolveGitBranch: () => string | undefined;
|
|
8
|
+
export default resolveGitBranch;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "14.0
|
|
1
|
+
export declare const version = "14.1.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/fusion-framework-cli",
|
|
3
|
-
"version": "14.0
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"Fusion",
|
|
6
6
|
"Fusion Framework",
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {
|
|
97
97
|
"@types/inquirer": "^9.0.9",
|
|
98
|
+
"chalk": "^5.6.0",
|
|
98
99
|
"commander": "^14.0.1",
|
|
99
100
|
"deepmerge": "^4.3.1",
|
|
100
101
|
"dotenv": "^17.3.1",
|
|
@@ -110,11 +111,11 @@
|
|
|
110
111
|
"vite": "^8.0.0",
|
|
111
112
|
"vite-tsconfig-paths": "^6.0.4",
|
|
112
113
|
"zod": "^4.3.6",
|
|
113
|
-
"@equinor/fusion-framework-dev-portal": "5.0
|
|
114
|
-
"@equinor/fusion-imports": "2.0.0",
|
|
115
|
-
"@equinor/fusion-framework-module-msal-node": "4.0.0",
|
|
114
|
+
"@equinor/fusion-framework-dev-portal": "5.1.0",
|
|
115
|
+
"@equinor/fusion-framework-vite-plugin-raw-imports": "2.0.0",
|
|
116
116
|
"@equinor/fusion-framework-dev-server": "2.0.0",
|
|
117
|
-
"@equinor/fusion-framework-
|
|
117
|
+
"@equinor/fusion-framework-module-msal-node": "4.0.0",
|
|
118
|
+
"@equinor/fusion-imports": "2.0.0"
|
|
118
119
|
},
|
|
119
120
|
"devDependencies": {
|
|
120
121
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -128,7 +129,6 @@
|
|
|
128
129
|
"@vitest/coverage-v8": "^4.0.18",
|
|
129
130
|
"adm-zip": "^0.5.10",
|
|
130
131
|
"ajv": "^8.17.1",
|
|
131
|
-
"chalk": "^5.6.0",
|
|
132
132
|
"is-ci": "^4.1.0",
|
|
133
133
|
"normalize-package-data": "^8.0.0",
|
|
134
134
|
"open": "^11.0.0",
|