@equinor/fusion-framework-cli 11.0.0-next.14 → 11.0.0-next.16
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 +39 -0
- package/bin/build/bin.mjs +1 -0
- package/bin/build/cli.mjs +7 -0
- package/bin/build/create-auth-client-Ds0jZb_X.js +1 -0
- package/bin/build/index-DZEz5jYv.js +1 -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/merge-dev-server-config.js +2 -20
- 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-manifest.js +2 -2
- 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/utils/index.js +1 -0
- package/dist/esm/lib/utils/index.js.map +1 -1
- package/dist/esm/lib/utils/resolve-annotations.js +2 -2
- package/dist/esm/lib/utils/resolve-annotations.js.map +1 -1
- package/dist/esm/lib/utils/resolve-devops-annotations.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +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/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 +1 -1
- package/dist/types/lib/portal/load-portal-schema.d.ts +1 -1
- package/dist/types/lib/portal/portal-config.d.ts +1 -1
- package/dist/types/lib/portal/portal-manifest.schema.d.ts +6 -6
- package/dist/types/lib/utils/index.d.ts +1 -0
- package/dist/types/lib/utils/resolve-devops-annotations.d.ts +2 -2
- package/dist/types/lib/utils/resolve-git-commit-sha.d.ts +1 -0
- package/dist/types/lib/utils/resolve-github-annotations.d.ts +2 -2
- package/dist/types/version.d.ts +1 -1
- package/package.json +68 -27
- package/bin/build/bin.js +0 -28
- package/bin/build/cli.js +0 -10099
- package/bin/build/create-auth-client-DEexcuNX.js +0 -1415
- package/bin/build/portal-config-publish--QAre9Id.js +0 -29623
- 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 -171
- 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,40 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { ConsoleLogger } from '../../../bin/utils';
|
|
3
|
-
import { bundlePortal } from '../../../bin';
|
|
4
|
-
export const command = createCommand('pack')
|
|
5
|
-
.description('Bundle the Fusion portal into a deployable archive.')
|
|
6
|
-
.addHelpText('after', [
|
|
7
|
-
'Bundles the Fusion portal using the provided manifest and schema into a zip archive for deployment.',
|
|
8
|
-
'',
|
|
9
|
-
'If no manifest is provided, a default portal.manifest.[ts|js|json] is used from the current directory.',
|
|
10
|
-
'',
|
|
11
|
-
'Options:',
|
|
12
|
-
' -a, --archive Name of the output archive file (default: out/bundle.zip)',
|
|
13
|
-
' --schema Schema file to use for validation',
|
|
14
|
-
' -d, --debug Enable debug mode for verbose logging',
|
|
15
|
-
'',
|
|
16
|
-
'Examples:',
|
|
17
|
-
' $ fusion-framework-cli portal pack',
|
|
18
|
-
' $ fusion-framework-cli portal pack --archive my-portal.zip --schema portal.schema.json',
|
|
19
|
-
' $ fusion-framework-cli portal pack portal.manifest.prod.ts --debug',
|
|
20
|
-
].join('\n'))
|
|
21
|
-
.option('-a, --archive [string]', 'Name of the output archive file (default: out/bundle.zip)', 'out/bundle.zip')
|
|
22
|
-
.option('-d, --debug [boolean]', 'Enable debug mode for verbose logging', false)
|
|
23
|
-
.option('--schema [string]', 'Schema file to use for validation')
|
|
24
|
-
.argument('[manifest]', 'Manifest file to use for bundling (e.g., portal.manifest[.env]?.[ts,js,json])')
|
|
25
|
-
.action(async (manifest, options) => {
|
|
26
|
-
const log = new ConsoleLogger('portal:pack', {
|
|
27
|
-
debug: options.debug,
|
|
28
|
-
});
|
|
29
|
-
await bundlePortal({
|
|
30
|
-
log,
|
|
31
|
-
manifest,
|
|
32
|
-
archive: options.archive,
|
|
33
|
-
schema: options.schema,
|
|
34
|
-
}).catch((error) => {
|
|
35
|
-
log.error('Failed to create package:', error);
|
|
36
|
-
process.exit(1);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
export default command;
|
|
40
|
-
//# sourceMappingURL=pack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../../../src/cli/commands/portal/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;KACzC,WAAW,CAAC,qDAAqD,CAAC;KAClE,WAAW,CACV,OAAO,EACP;IACE,qGAAqG;IACrG,EAAE;IACF,wGAAwG;IACxG,EAAE;IACF,UAAU;IACV,6EAA6E;IAC7E,oDAAoD;IACpD,wDAAwD;IACxD,EAAE;IACF,WAAW;IACX,sCAAsC;IACtC,0FAA0F;IAC1F,sEAAsE;CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;KACA,MAAM,CACL,wBAAwB,EACxB,2DAA2D,EAC3D,gBAAgB,CACjB;KACA,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KAChE,QAAQ,CACP,YAAY,EACZ,+EAA+E,CAChF;KACA,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAClC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,aAAa,EAAE;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,MAAM,YAAY,CAAC;QACjB,GAAG;QACH,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,eAAe,OAAO,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { withAuthOptions } from '../../options/auth.js';
|
|
3
|
-
import { createEnvOption } from '../../options/env.js';
|
|
4
|
-
import { ConsoleLogger } from '../../../bin/utils';
|
|
5
|
-
import { bundlePortal } from '../../../bin';
|
|
6
|
-
import { uploadPortalBundle } from '../../../bin/portal-upload.js';
|
|
7
|
-
import { tagPortal, AllowedTags } from '../../../bin/portal-tag.js';
|
|
8
|
-
import { initializeFramework } from '../../../lib/framework.node.js';
|
|
9
|
-
import chalk from 'chalk';
|
|
10
|
-
export const command = withAuthOptions(createCommand('publish')
|
|
11
|
-
.description('Build, upload, and tag your Fusion portal bundle for deployment.')
|
|
12
|
-
.addHelpText('after', [
|
|
13
|
-
'Builds, uploads, and tags your Fusion portal bundle for deployment to the portal registry.',
|
|
14
|
-
'',
|
|
15
|
-
'Options:',
|
|
16
|
-
' --env Target environment',
|
|
17
|
-
' -m, --manifest Manifest file to use for bundling',
|
|
18
|
-
' --schema Schema file to use for validation',
|
|
19
|
-
' -t, --tag Tag to apply to the published portal',
|
|
20
|
-
' -d, --debug Enable debug mode for verbose logging',
|
|
21
|
-
'',
|
|
22
|
-
'Examples:',
|
|
23
|
-
' $ fusion-framework-cli portal publish',
|
|
24
|
-
' $ fusion-framework-cli portal publish --env prod --manifest portal.manifest.prod.ts',
|
|
25
|
-
].join('\n'))
|
|
26
|
-
.option('-d, --debug', 'Enable debug mode for verbose logging', false)
|
|
27
|
-
.addOption(createEnvOption({ allowDev: false }))
|
|
28
|
-
.option('-m, --manifest [string]', 'Manifest file to use for bundling (e.g., portal.manifest.ts)')
|
|
29
|
-
.option('--schema [string]', 'Schema file to use for validation')
|
|
30
|
-
.option('-t, --tag [string]', `Tag to apply to the published portal (${Object.values(AllowedTags).join(' | ')})`, AllowedTags.Latest)
|
|
31
|
-
.action(async (options) => {
|
|
32
|
-
const log = new ConsoleLogger('portal:publish', {
|
|
33
|
-
debug: options.debug,
|
|
34
|
-
});
|
|
35
|
-
log?.info('Using environment:', chalk.redBright(options.env));
|
|
36
|
-
log.start('📦 Bundling Portal Template...');
|
|
37
|
-
const bundle = await bundlePortal({
|
|
38
|
-
log,
|
|
39
|
-
manifest: options.manifest,
|
|
40
|
-
schema: options.schema,
|
|
41
|
-
}).catch((error) => {
|
|
42
|
-
log.error('😢 Failed to create bundle:', error);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
});
|
|
45
|
-
log.succeed('📦 Bundling completed');
|
|
46
|
-
log?.start('💾 Initializing Fusion Framework...');
|
|
47
|
-
const framework = await initializeFramework({
|
|
48
|
-
env: options.env,
|
|
49
|
-
auth: {
|
|
50
|
-
token: options.token,
|
|
51
|
-
tenantId: options.tenantId,
|
|
52
|
-
clientId: options.clientId,
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
log?.succeed('💾 Initialized Fusion Framework');
|
|
56
|
-
log.start('🚀 Uploading Portal Template...');
|
|
57
|
-
await uploadPortalBundle({ log, framework, fileOrBundle: bundle.archive }).catch((error) => {
|
|
58
|
-
log.error('😢 Failed to upload bundle:', error);
|
|
59
|
-
process.exit(1);
|
|
60
|
-
});
|
|
61
|
-
log.succeed('🚀 Upload completed');
|
|
62
|
-
log.start('🏷️ Tagging Portal Template...');
|
|
63
|
-
await tagPortal({
|
|
64
|
-
tag: options.tag,
|
|
65
|
-
name: bundle.manifest.name,
|
|
66
|
-
version: bundle.manifest.build.version,
|
|
67
|
-
framework,
|
|
68
|
-
log,
|
|
69
|
-
}).catch((error) => {
|
|
70
|
-
log.error('😢 Failed to tag Portal Template:', error);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
});
|
|
73
|
-
log.succeed('🏷️ Tagging completed');
|
|
74
|
-
}));
|
|
75
|
-
export default command;
|
|
76
|
-
//# sourceMappingURL=publish.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../../src/cli/commands/portal/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import Ajv2020 from 'ajv/dist/2020';
|
|
3
|
-
import { ConsoleLogger } from '../../../bin/utils/ConsoleLogger.js';
|
|
4
|
-
import { loadPortalSchema } from '../../../lib/portal';
|
|
5
|
-
import { writeFile } from '../../../lib/utils/write-file.js';
|
|
6
|
-
import { createEnvOption } from '../../options/env.js';
|
|
7
|
-
import { importJSON } from '@equinor/fusion-imports';
|
|
8
|
-
export const command = createCommand('schema')
|
|
9
|
-
.description('Generate or validate a Fusion portal schema file.')
|
|
10
|
-
.addHelpText('after', [
|
|
11
|
-
'Generates or validates a Fusion portal schema file.',
|
|
12
|
-
'',
|
|
13
|
-
'Options:',
|
|
14
|
-
' -o, --output Output file name (default: stdout)',
|
|
15
|
-
' -v, --validate Validate the generated schema against a JSON file',
|
|
16
|
-
' -d, --debug Enable debug mode for verbose logging',
|
|
17
|
-
'',
|
|
18
|
-
'Examples:',
|
|
19
|
-
' $ fusion-framework-cli portal schema',
|
|
20
|
-
' $ fusion-framework-cli portal schema --output portal.schema.json',
|
|
21
|
-
' $ fusion-framework-cli portal schema --validate my-config.json',
|
|
22
|
-
].join('\n'))
|
|
23
|
-
.addOption(createEnvOption({ allowDev: true }))
|
|
24
|
-
.option('-o, --output <string>', 'Output file name (default: stdout)', 'stdout')
|
|
25
|
-
.option('-d, --debug', 'Enable debug mode for verbose logging', false)
|
|
26
|
-
.option('-v, --validate <file>', 'Validate the generated schema against a JSON file')
|
|
27
|
-
.argument('[schema]', 'Schema build file to use (e.g., portal.schema[.env]?.[ts,js,json])')
|
|
28
|
-
.action(async (manifest, args) => {
|
|
29
|
-
const log = new ConsoleLogger('portal:schema', { debug: args.debug });
|
|
30
|
-
log.debug('Manifest file:', manifest);
|
|
31
|
-
log.debug('Current working directory:', process.cwd());
|
|
32
|
-
log.start('Generating schema for the application...');
|
|
33
|
-
const schemaResult = await loadPortalSchema({
|
|
34
|
-
command: 'build',
|
|
35
|
-
environment: args.environment,
|
|
36
|
-
mode: 'build',
|
|
37
|
-
root: process.cwd(),
|
|
38
|
-
});
|
|
39
|
-
log.debug('Schema:', JSON.stringify(schemaResult, null, 2));
|
|
40
|
-
log.succeed('Schema generated successfully!');
|
|
41
|
-
if (args.output) {
|
|
42
|
-
if (args.output === 'stdout') {
|
|
43
|
-
log.info('Schema:', JSON.stringify(schemaResult.schema, null, 2));
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
log.start(`Writing schema to ${args.output}`);
|
|
47
|
-
writeFile(args.output, JSON.stringify(schemaResult.schema, null, 2));
|
|
48
|
-
log.succeed(`Schema written to ${args.output}`);
|
|
49
|
-
}
|
|
50
|
-
process.exit(0);
|
|
51
|
-
}
|
|
52
|
-
if (args.validate) {
|
|
53
|
-
log.start('Validating schema against JSON file...');
|
|
54
|
-
const ajv = new Ajv2020({ strict: true });
|
|
55
|
-
const validate = ajv.compile(schemaResult.schema);
|
|
56
|
-
// import the JSON file to validate
|
|
57
|
-
const jsonValue = await importJSON(args.validate);
|
|
58
|
-
log.debug('JSON value:', JSON.stringify(jsonValue, null, 2));
|
|
59
|
-
const valid = validate(jsonValue);
|
|
60
|
-
if (!valid) {
|
|
61
|
-
log.fail('Schema validation failed:', JSON.stringify(validate.errors ?? 'Unknown error'));
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
log.succeed('Schema validation passed!');
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
export default command;
|
|
70
|
-
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/cli/commands/portal/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { createEnvOption } from '../../options/env.js';
|
|
3
|
-
import { withAuthOptions } from '../../options/auth.js';
|
|
4
|
-
import { tagPortal } from '../../../bin/portal-tag.js';
|
|
5
|
-
import { ConsoleLogger } from '../../../bin/utils/ConsoleLogger.js';
|
|
6
|
-
import { loadPortalManifest } from '../../../bin/portal-manifest.js';
|
|
7
|
-
import { initializeFramework } from '../../../lib';
|
|
8
|
-
export const command = withAuthOptions(createCommand('tag')
|
|
9
|
-
.description('Tag your Fusion portal with a specific version or label.')
|
|
10
|
-
.addHelpText('after', [
|
|
11
|
-
'Tags your Fusion portal with a specific version or label in the portal registry.',
|
|
12
|
-
'',
|
|
13
|
-
'Options:',
|
|
14
|
-
' -n, --name Portal name (if not provided, resolved from manifest)',
|
|
15
|
-
' -m, --manifest Manifest file to use for resolving portal name and version',
|
|
16
|
-
' -v, --version Version to tag (if not provided, resolved from manifest)',
|
|
17
|
-
' --env Target environment',
|
|
18
|
-
' -d, --debug Enable debug mode for verbose logging',
|
|
19
|
-
' --silent Silent mode, suppresses output except errors',
|
|
20
|
-
'',
|
|
21
|
-
'Examples:',
|
|
22
|
-
' $ fusion-framework-cli portal tag latest',
|
|
23
|
-
' $ fusion-framework-cli portal tag preview --env prod --manifest portal.manifest.prod.ts',
|
|
24
|
-
].join('\n'))
|
|
25
|
-
.addOption(createEnvOption({ allowDev: false }))
|
|
26
|
-
.option('-n, --name <string>', 'Portal name (if not provided, resolved from manifest)')
|
|
27
|
-
.option('-m, --manifest <string>', 'Manifest file to use for resolving portal name and version (only used when --name or --version is not provided)')
|
|
28
|
-
.option('-v, --version <string>', 'Version to tag (if not provided, resolved from manifest)')
|
|
29
|
-
.option('-d, --debug', 'Enable debug mode for verbose logging')
|
|
30
|
-
.option('--silent', 'Silent mode, suppresses output except errors')
|
|
31
|
-
.argument('<tag>', 'Tag to apply (latest | preview)')
|
|
32
|
-
.action(async (tag, options) => {
|
|
33
|
-
const log = options.silent ? null : new ConsoleLogger('app:tag', { debug: options.debug });
|
|
34
|
-
const env = {
|
|
35
|
-
command: 'build',
|
|
36
|
-
environment: options.env,
|
|
37
|
-
mode: process.env.NODE_ENV ?? 'production',
|
|
38
|
-
root: process.cwd(),
|
|
39
|
-
};
|
|
40
|
-
let name = options.name;
|
|
41
|
-
let version = options.version;
|
|
42
|
-
if (!name || !version) {
|
|
43
|
-
const { manifest: portalManifest } = await loadPortalManifest({
|
|
44
|
-
log,
|
|
45
|
-
manifest: options.manifest,
|
|
46
|
-
env,
|
|
47
|
-
});
|
|
48
|
-
name = name ?? portalManifest.name;
|
|
49
|
-
version = version ?? portalManifest.build?.version;
|
|
50
|
-
}
|
|
51
|
-
log?.start('Initializing Fusion Framework...');
|
|
52
|
-
const framework = await initializeFramework({
|
|
53
|
-
env: options.env,
|
|
54
|
-
auth: {
|
|
55
|
-
token: options.token,
|
|
56
|
-
tenantId: options.tenantId,
|
|
57
|
-
clientId: options.clientId,
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
log?.succeed('Initialized Fusion Framework');
|
|
61
|
-
tagPortal({
|
|
62
|
-
tag,
|
|
63
|
-
name,
|
|
64
|
-
version,
|
|
65
|
-
framework,
|
|
66
|
-
log,
|
|
67
|
-
}).catch((error) => {
|
|
68
|
-
log?.error('😢 Failed to tag application:', error);
|
|
69
|
-
process.exit(1);
|
|
70
|
-
});
|
|
71
|
-
}));
|
|
72
|
-
export default command;
|
|
73
|
-
//# sourceMappingURL=tag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../../../src/cli/commands/portal/tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAmB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CACpC,aAAa,CAAC,KAAK,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC;KACvE,WAAW,CACV,OAAO,EACP;IACE,kFAAkF;IAClF,EAAE;IACF,UAAU;IACV,yEAAyE;IACzE,8EAA8E;IAC9E,4EAA4E;IAC5E,qCAAqC;IACrC,wDAAwD;IACxD,+DAA+D;IAC/D,EAAE;IACF,WAAW;IACX,4CAA4C;IAC5C,2FAA2F;CAC5F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;KACA,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/C,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;KACtF,MAAM,CACL,yBAAyB,EACzB,iHAAiH,CAClH;KACA,MAAM,CAAC,wBAAwB,EAAE,0DAA0D,CAAC;KAC5F,MAAM,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAC9D,MAAM,CAAC,UAAU,EAAE,8CAA8C,CAAC;KAClE,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3F,MAAM,GAAG,GAAe;QACtB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO,CAAC,GAAG;QACxB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;KACpB,CAAC;IAEF,IAAI,IAAI,GAAW,OAAO,CAAC,IAAI,CAAC;IAChC,IAAI,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAkB,CAAC;YAC5D,GAAG;YACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC;QACnC,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;IACrD,CAAC;IAED,GAAG,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;KACF,CAAC,CAAC;IACH,GAAG,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE7C,SAAS,CAAC;QACR,GAAG;QACH,IAAI;QACJ,OAAO;QACP,SAAS;QACT,GAAG;KACJ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,GAAG,EAAE,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACL,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { withAuthOptions } from '../../options/auth.js';
|
|
3
|
-
import { createEnvOption } from '../../options/env.js';
|
|
4
|
-
import { ConsoleLogger } from '../../../bin/utils';
|
|
5
|
-
import { initializeFramework } from '../../../lib';
|
|
6
|
-
import { uploadPortalBundle } from '../../../bin/portal-upload.js';
|
|
7
|
-
export const command = withAuthOptions(createCommand('upload')
|
|
8
|
-
.description('Upload a Fusion portal bundle to the portal registry.')
|
|
9
|
-
.addHelpText('after', [
|
|
10
|
-
'Uploads a distributable Fusion portal bundle to the portal registry for deployment.',
|
|
11
|
-
'',
|
|
12
|
-
'Options:',
|
|
13
|
-
' --env Target environment',
|
|
14
|
-
' -d, --debug Enable debug mode for verbose logging',
|
|
15
|
-
'',
|
|
16
|
-
'Examples:',
|
|
17
|
-
' $ fusion-framework-cli portal upload my-portal-bundle.zip',
|
|
18
|
-
' $ fusion-framework-cli portal upload my-portal-bundle.zip --env prod',
|
|
19
|
-
].join('\n'))
|
|
20
|
-
.option('-d, --debug [boolean]', 'Enable debug mode for verbose logging', false)
|
|
21
|
-
.addOption(createEnvOption({ allowDev: false }))
|
|
22
|
-
.argument('<bundle>', 'Portal bundle to upload (e.g., out/bundle.zip)')
|
|
23
|
-
.action(async (bundle, options) => {
|
|
24
|
-
const log = new ConsoleLogger('portal:upload', { debug: options.debug });
|
|
25
|
-
log?.start('Initializing Fusion Framework...');
|
|
26
|
-
const framework = await initializeFramework({
|
|
27
|
-
env: options.env,
|
|
28
|
-
auth: {
|
|
29
|
-
token: options.token,
|
|
30
|
-
tenantId: options.tenantId,
|
|
31
|
-
clientId: options.clientId,
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
log?.succeed('Initialized Fusion Framework');
|
|
35
|
-
await uploadPortalBundle({ log, framework, fileOrBundle: bundle }).catch((error) => {
|
|
36
|
-
log.error('Failed to upload bundle:', error);
|
|
37
|
-
process.exit(1);
|
|
38
|
-
});
|
|
39
|
-
}));
|
|
40
|
-
export default command;
|
|
41
|
-
//# sourceMappingURL=upload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../../src/cli/commands/portal/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CACpC,aAAa,CAAC,QAAQ,CAAC;KACpB,WAAW,CAAC,uDAAuD,CAAC;KACpE,WAAW,CACV,OAAO,EACP;IACE,qFAAqF;IACrF,EAAE;IACF,UAAU;IACV,iCAAiC;IACjC,wDAAwD;IACxD,EAAE;IACF,WAAW;IACX,6DAA6D;IAC7D,wEAAwE;CACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;KACA,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,EAAE,KAAK,CAAC;KAC/E,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/C,QAAQ,CAAC,UAAU,EAAE,gDAAgD,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEzE,GAAG,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;KACF,CAAC,CAAC;IACH,GAAG,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjF,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACL,CAAC;AACF,eAAe,OAAO,CAAC"}
|
package/dist/esm/cli/main.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Entry point for the Fusion Framework CLI.
|
|
3
|
-
*
|
|
4
|
-
* This file sets up the CLI program, loads the package metadata, and registers all available commands.
|
|
5
|
-
*
|
|
6
|
-
* Key responsibilities:
|
|
7
|
-
* - Locates the CLI's root directory and package.json using read-package-up.
|
|
8
|
-
* - Sets the CLI_BIN environment variable for internal use.
|
|
9
|
-
* - Initializes the Commander.js program with name, version, and description from package.json.
|
|
10
|
-
* - Registers all CLI commands via the registerCommands function.
|
|
11
|
-
* - Parses process arguments and starts the CLI.
|
|
12
|
-
*
|
|
13
|
-
* Maintenance notes:
|
|
14
|
-
* - To add new commands, update the registerCommands module.
|
|
15
|
-
* - To change CLI metadata (name, version, description), update package.json.
|
|
16
|
-
* - This file should remain minimal and only handle top-level CLI setup logic.
|
|
17
|
-
* - For troubleshooting, ensure the CLI_BIN path is set correctly and that package.json is accessible.
|
|
18
|
-
*
|
|
19
|
-
* For more details, see the Fusion Framework CLI documentation or contact the maintainers.
|
|
20
|
-
*/
|
|
21
|
-
import { fileURLToPath } from 'node:url';
|
|
22
|
-
import { dirname, resolve } from 'node:path';
|
|
23
|
-
/** find cli package.json */
|
|
24
|
-
import { readPackageUpSync } from 'read-package-up';
|
|
25
|
-
// try to find the package.json of the CLI
|
|
26
|
-
const pkg = readPackageUpSync({ cwd: fileURLToPath(import.meta.url) });
|
|
27
|
-
if (!pkg) {
|
|
28
|
-
throw Error('failed to find program root');
|
|
29
|
-
}
|
|
30
|
-
// set the CLI_BIN environment variable to the path of the CLI binary
|
|
31
|
-
process.env.CLI_BIN = resolve(dirname(pkg.path), String(pkg.packageJson.bin?.['fusion-framework-cli']));
|
|
32
|
-
import { Command } from 'commander';
|
|
33
|
-
// Create the main CLI program instance
|
|
34
|
-
const program = new Command();
|
|
35
|
-
program.name(pkg.packageJson.name);
|
|
36
|
-
program.description([
|
|
37
|
-
`${pkg.packageJson.name}@${pkg.packageJson.version}`,
|
|
38
|
-
'',
|
|
39
|
-
'Fusion Framework CLI',
|
|
40
|
-
'',
|
|
41
|
-
'A toolkit for building, packaging, deploying, and managing Fusion applications and portals.',
|
|
42
|
-
'',
|
|
43
|
-
'• Run fusion <command> --help for details on any command.',
|
|
44
|
-
'• For documentation, issues, and source code, visit:',
|
|
45
|
-
` ${pkg.packageJson.homepage}`,
|
|
46
|
-
].join('\n'));
|
|
47
|
-
program.version(pkg.packageJson.version, '-V, --version', 'CLI version');
|
|
48
|
-
import registerCommands from './commands';
|
|
49
|
-
registerCommands(program);
|
|
50
|
-
/** read action and options and start programs */
|
|
51
|
-
program.parse();
|
|
52
|
-
//# sourceMappingURL=main.js.map
|
package/dist/esm/cli/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,0CAA0C;AAC1C,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvE,IAAI,CAAC,GAAG,EAAE,CAAC;IACT,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC;AAED,qEAAqE;AACrE,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC,CACtD,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,uCAAuC;AACvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,OAAO,CAAC,WAAW,CACjB;IACE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE;IACpD,EAAE;IACF,sBAAsB;IACtB,EAAE;IACF,6FAA6F;IAC7F,EAAE;IACF,2DAA2D;IAC3D,sDAAsD;IACtD,KAAK,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE;CAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAEzE,OAAO,gBAAgB,MAAM,YAAY,CAAC;AAE1C,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE1B,iDAAiD;AACjD,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { createOption, InvalidOptionArgumentError } from 'commander';
|
|
2
|
-
// UUID validation regex (v4 UUID format)
|
|
3
|
-
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
4
|
-
export const tenantOption = createOption('--tenantId <string>', 'The Azure Active Directory tenant ID')
|
|
5
|
-
.env('FUSION_TENANT_ID')
|
|
6
|
-
.default('3aa4a235-b6e2-48d5-9195-7fcf05b459b0');
|
|
7
|
-
export const clientOption = createOption('--clientId <string>', 'The client ID of the application registered in Azure AD')
|
|
8
|
-
.env('FUSION_CLIENT_ID')
|
|
9
|
-
.default('a318b8e1-0295-4e17-98d5-35f67dfeba14');
|
|
10
|
-
export const tokenOption = createOption('--token <string>', 'The Azure AD access token. If provided, the --tenant and --client options are ignored')
|
|
11
|
-
.env('FUSION_TOKEN')
|
|
12
|
-
.default(undefined);
|
|
13
|
-
export const scopeOption = createOption('--scope <scopes...>', 'Azure audience scope, normally the application ID URI of the API you want to access and `.default`')
|
|
14
|
-
.env('FUSION_AUTH_SCOPE')
|
|
15
|
-
.default(['5a842df8-3238-415d-b168-9f16a6a6031b/.default']);
|
|
16
|
-
/**
|
|
17
|
-
* Enhances a given command with authentication-related options.
|
|
18
|
-
*
|
|
19
|
-
* This function adds the following options to the provided command:
|
|
20
|
-
* - `tenantId`: Specifies the tenant identifier.
|
|
21
|
-
* - `clientId`: Specifies the client identifier.
|
|
22
|
-
* - `token`: Specifies the authentication token.
|
|
23
|
-
*
|
|
24
|
-
* @param command - The command to which authentication options will be added.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```ts
|
|
28
|
-
* import { createCommand } from 'commander';
|
|
29
|
-
* import { withAuthOptions } from './path/to/this/file';
|
|
30
|
-
* const command = withAuthOptions(
|
|
31
|
-
* createCommand('my-command')
|
|
32
|
-
* .description('My command description')
|
|
33
|
-
* .action((options) => {
|
|
34
|
-
* console.log('tenantId:', options.tenant);
|
|
35
|
-
* console.log('clientId:', options.client);
|
|
36
|
-
* console.log('token:', options.token);
|
|
37
|
-
* })
|
|
38
|
-
* );
|
|
39
|
-
*
|
|
40
|
-
* withAuthOptions(command);
|
|
41
|
-
* ```
|
|
42
|
-
**/
|
|
43
|
-
export const withAuthOptions = (command, args) => {
|
|
44
|
-
command.addOption(tenantOption);
|
|
45
|
-
command.addOption(clientOption);
|
|
46
|
-
if (!args?.excludeToken) {
|
|
47
|
-
command.addOption(tokenOption);
|
|
48
|
-
}
|
|
49
|
-
if (args?.includeScope) {
|
|
50
|
-
command.addOption(scopeOption);
|
|
51
|
-
}
|
|
52
|
-
command.hook('preAction', (thisCommand) => {
|
|
53
|
-
const options = thisCommand.opts();
|
|
54
|
-
// If token is provided, skip other validations
|
|
55
|
-
if (options.token) {
|
|
56
|
-
if (typeof options.token !== 'string' || options.token.trim() === '') {
|
|
57
|
-
throw new InvalidOptionArgumentError('Token must be a non-empty string.');
|
|
58
|
-
}
|
|
59
|
-
// Remove tenantId, clientId, and scope by setting them to undefined
|
|
60
|
-
thisCommand.setOptionValue('tenantId', undefined);
|
|
61
|
-
thisCommand.setOptionValue('clientId', undefined);
|
|
62
|
-
if (args?.includeScope) {
|
|
63
|
-
thisCommand.setOptionValue('scope', undefined);
|
|
64
|
-
}
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
// Validate tenantId
|
|
68
|
-
if (!options.tenantId || typeof options.tenantId !== 'string') {
|
|
69
|
-
throw new InvalidOptionArgumentError('Tenant ID must be a non-empty string.');
|
|
70
|
-
}
|
|
71
|
-
if (!UUID_REGEX.test(options.tenantId)) {
|
|
72
|
-
throw new InvalidOptionArgumentError('Tenant ID must be a valid UUID.');
|
|
73
|
-
}
|
|
74
|
-
// Validate clientId
|
|
75
|
-
if (!options.clientId || typeof options.clientId !== 'string') {
|
|
76
|
-
throw new InvalidOptionArgumentError('Client ID must be a non-empty string.');
|
|
77
|
-
}
|
|
78
|
-
if (!UUID_REGEX.test(options.clientId)) {
|
|
79
|
-
throw new InvalidOptionArgumentError('Client ID must be a valid UUID.');
|
|
80
|
-
}
|
|
81
|
-
// Validate scope if included
|
|
82
|
-
if (args?.includeScope) {
|
|
83
|
-
if (!Array.isArray(options.scope) || options.scope.length === 0) {
|
|
84
|
-
throw new InvalidOptionArgumentError('Scope must be a non-empty array of strings.');
|
|
85
|
-
}
|
|
86
|
-
for (const scope of options.scope) {
|
|
87
|
-
if (typeof scope !== 'string' || scope.trim() === '') {
|
|
88
|
-
throw new InvalidOptionArgumentError('Each scope must be a non-empty string.');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
return command;
|
|
94
|
-
};
|
|
95
|
-
export default withAuthOptions;
|
|
96
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/options/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { createOption } from 'commander';
|
|
2
|
-
import { resolveDefaultEnv, FusionEnv } from '../../lib/framework.node.js';
|
|
3
|
-
/**
|
|
4
|
-
* Creates an environment option for Fusion Framework CLI commands.
|
|
5
|
-
*
|
|
6
|
-
* @param options - Configuration options for the environment option.
|
|
7
|
-
* @param options.default - The default environment to use if not specified.
|
|
8
|
-
* @param options.allowDev - Whether to allow the development environment.
|
|
9
|
-
* @returns A configured Commander option for the environment.
|
|
10
|
-
*/
|
|
11
|
-
export const createEnvOption = (options) => {
|
|
12
|
-
const allowedEnvs = Object.values(FusionEnv).filter((env) => env === FusionEnv.Development ? options.allowDev : true);
|
|
13
|
-
return createOption('-e, --env <string>', [
|
|
14
|
-
'Specify the environment to use for the Fusion Framework command.',
|
|
15
|
-
`Allowed values: [${allowedEnvs.join(', ')}, custom]`,
|
|
16
|
-
'You can also set the environment using the FUSION_ENV environment variable.',
|
|
17
|
-
`Defaults to ${options.default ?? resolveDefaultEnv(options.allowDev)}.`,
|
|
18
|
-
options.allowDev
|
|
19
|
-
? 'Development environment is allowed.'
|
|
20
|
-
: 'Development environment is not allowed for this command.',
|
|
21
|
-
].join(' '))
|
|
22
|
-
.env('FUSION_ENV')
|
|
23
|
-
.default(options.default ?? resolveDefaultEnv(options.allowDev));
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Default environment option that allows the development environment.
|
|
27
|
-
*/
|
|
28
|
-
export const envOption = createEnvOption({ allowDev: true });
|
|
29
|
-
export default envOption;
|
|
30
|
-
//# sourceMappingURL=env.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/cli/options/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAI3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAmD,EAAE,EAAE;IACrF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1D,GAAG,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACxD,CAAC;IACF,OAAO,YAAY,CACjB,oBAAoB,EACpB;QACE,kEAAkE;QAClE,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;QACrD,6EAA6E;QAC7E,eAAe,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;QACxE,OAAO,CAAC,QAAQ;YACd,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,0DAA0D;KAC/D,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ;SACE,GAAG,CAAC,YAAY,CAAC;SACjB,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7D,eAAe,SAAS,CAAC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { ModulesConfigurator } from '@equinor/fusion-framework-module';
|
|
2
|
-
import { enableAuthModule } from '@equinor/fusion-framework-module-msal-node';
|
|
3
|
-
import { module as httpModule } from '@equinor/fusion-framework-module-http';
|
|
4
|
-
import { enableServiceDiscovery, } from '@equinor/fusion-framework-module-service-discovery';
|
|
5
|
-
import isContinuousIntegration from 'is-ci';
|
|
6
|
-
// Default scope for Fusion service discovery
|
|
7
|
-
const FUSION_SERVICE_SCOPE = ['5a842df8-3238-415d-b168-9f16a6a6031b/.default'];
|
|
8
|
-
/**
|
|
9
|
-
* Enum for supported Fusion environments.
|
|
10
|
-
* Used to select the correct environment for service discovery and authentication.
|
|
11
|
-
*/
|
|
12
|
-
export var FusionEnv;
|
|
13
|
-
(function (FusionEnv) {
|
|
14
|
-
FusionEnv["ContinuesIntegration"] = "ci";
|
|
15
|
-
FusionEnv["QualityAssurance"] = "fqa";
|
|
16
|
-
FusionEnv["Training"] = "tr";
|
|
17
|
-
FusionEnv["Production"] = "fprd";
|
|
18
|
-
FusionEnv["Development"] = "dev";
|
|
19
|
-
})(FusionEnv || (FusionEnv = {}));
|
|
20
|
-
/**
|
|
21
|
-
* Resolves the default environment based on CI status and dev allowance.
|
|
22
|
-
*
|
|
23
|
-
* @param allowDev - If true, allows development environment when not in CI.
|
|
24
|
-
* @returns The resolved Fusion environment.
|
|
25
|
-
*/
|
|
26
|
-
export const resolveDefaultEnv = (allowDev) => {
|
|
27
|
-
// If development is allowed and not running in CI, use development environment
|
|
28
|
-
if (allowDev && !isContinuousIntegration) {
|
|
29
|
-
return FusionEnv.Development;
|
|
30
|
-
}
|
|
31
|
-
// Otherwise, default to CI environment
|
|
32
|
-
return FusionEnv.ContinuesIntegration;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Initializes the Fusion Framework with the provided settings.
|
|
36
|
-
*
|
|
37
|
-
* This function configures HTTP, service discovery, and authentication modules
|
|
38
|
-
* based on the supplied configuration. It supports multiple authentication modes
|
|
39
|
-
* and allows customization of service discovery endpoints and scopes.
|
|
40
|
-
*
|
|
41
|
-
* @param config - The settings for framework initialization.
|
|
42
|
-
* @returns A promise resolving to the initialized Fusion Framework instance.
|
|
43
|
-
* @throws Will throw if required authentication parameters are missing.
|
|
44
|
-
*/
|
|
45
|
-
export const initializeFramework = async (config) => {
|
|
46
|
-
// Create a new module configurator for the framework
|
|
47
|
-
const configurator = new ModulesConfigurator();
|
|
48
|
-
// Determine the environment to use, defaulting to CI if not specified
|
|
49
|
-
const env = config.env ?? FusionEnv.ContinuesIntegration;
|
|
50
|
-
// Configure the HTTP module for service discovery
|
|
51
|
-
configurator.addConfig({
|
|
52
|
-
module: httpModule,
|
|
53
|
-
configure: (builder) => {
|
|
54
|
-
// Use CI environment for service discovery in development, otherwise use the selected env
|
|
55
|
-
const serviceDiscoveryEnv = env === FusionEnv.Development ? FusionEnv.ContinuesIntegration : env;
|
|
56
|
-
// Determine the base URI for service discovery
|
|
57
|
-
const baseUri = config.serviceDiscovery?.url ??
|
|
58
|
-
new URL(`/service-registry/environments/${serviceDiscoveryEnv}/services`, 'https://discovery.fusion.equinor.com').toString();
|
|
59
|
-
// Use provided scopes or default Fusion service scope
|
|
60
|
-
const defaultScopes = config.serviceDiscovery?.scope ?? FUSION_SERVICE_SCOPE;
|
|
61
|
-
// Register the service discovery client with the HTTP module
|
|
62
|
-
builder.configureClient('service_discovery', {
|
|
63
|
-
baseUri,
|
|
64
|
-
defaultScopes,
|
|
65
|
-
});
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
// Enable the service discovery module
|
|
69
|
-
enableServiceDiscovery(configurator);
|
|
70
|
-
// Enable the authentication module with custom configuration logic
|
|
71
|
-
enableAuthModule(configurator, (builder) => {
|
|
72
|
-
const { auth } = config;
|
|
73
|
-
// Handle direct token authentication
|
|
74
|
-
if ('token' in auth && auth.token) {
|
|
75
|
-
const { token } = auth;
|
|
76
|
-
builder.setMode('token_only');
|
|
77
|
-
builder.setAccessToken(token);
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
// Handle silent or interactive authentication
|
|
81
|
-
const { clientId, tenantId, interactive } = auth;
|
|
82
|
-
if (!clientId || !tenantId) {
|
|
83
|
-
// Both clientId and tenantId are required for these modes
|
|
84
|
-
throw new Error('clientId and tenantId are required for auth module');
|
|
85
|
-
}
|
|
86
|
-
// Set client configuration for authentication
|
|
87
|
-
builder.setClientConfig(tenantId, clientId);
|
|
88
|
-
// Set authentication mode based on interactive flag
|
|
89
|
-
builder.setMode(interactive ? 'interactive' : 'silent');
|
|
90
|
-
if (interactive) {
|
|
91
|
-
// For interactive mode, server configuration is required
|
|
92
|
-
const { server } = auth;
|
|
93
|
-
if (!server.port) {
|
|
94
|
-
throw new Error('server.port is required for interactive mode');
|
|
95
|
-
}
|
|
96
|
-
builder.setServerPort(server.port);
|
|
97
|
-
builder.setServerOnOpen(server.onOpen);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
// Initialize all configured modules and return the framework instance
|
|
101
|
-
const instance = await configurator.initialize();
|
|
102
|
-
return instance;
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=framework.node.js.map
|