@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,74 +0,0 @@
|
|
|
1
|
-
import { HttpJsonResponseError } from '@equinor/fusion-framework-module-http/errors';
|
|
2
|
-
import { initializeFramework, } from '../lib/framework.node.js';
|
|
3
|
-
import { formatPath, chalk } from './utils';
|
|
4
|
-
import { generatePortalConfig } from './portal-config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Publishes the portal configuration to the portal store for a specific build version.
|
|
7
|
-
*
|
|
8
|
-
* This function generates the portal config, loads the manifest, initializes the Fusion Framework,
|
|
9
|
-
* and sends the config to the portal service. Handles and logs errors for common failure scenarios.
|
|
10
|
-
*
|
|
11
|
-
* @param options - Options for config, manifest, environment, authentication, and logging.
|
|
12
|
-
* @returns A promise that resolves when publishing is complete.
|
|
13
|
-
* @throws If the build version is missing or publishing fails.
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
16
|
-
export const publishPortalConfig = async (options) => {
|
|
17
|
-
const { log, portal } = options;
|
|
18
|
-
// Generate the portal config using provided options and environment
|
|
19
|
-
const { config: portalConfig } = await generatePortalConfig({
|
|
20
|
-
log,
|
|
21
|
-
config: options.config,
|
|
22
|
-
env: { environment: options.environment },
|
|
23
|
-
});
|
|
24
|
-
log?.start('Initializing Fusion Framework...');
|
|
25
|
-
// Initialize the Fusion Framework with the provided environment and authentication
|
|
26
|
-
const framework = await initializeFramework({
|
|
27
|
-
env: options.environment,
|
|
28
|
-
auth: options.auth,
|
|
29
|
-
});
|
|
30
|
-
log?.succeed('Initialized Fusion Framework');
|
|
31
|
-
// Create a client for the 'portals' service
|
|
32
|
-
const portalClient = await framework.serviceDiscovery.createClient('portals');
|
|
33
|
-
// Subscribe to outgoing requests for logging and debugging
|
|
34
|
-
portalClient.request$.subscribe((request) => {
|
|
35
|
-
log?.debug('Request:', request);
|
|
36
|
-
log?.info('🌎', 'Executing request to:', formatPath(request.uri));
|
|
37
|
-
});
|
|
38
|
-
log?.start('Publishing portal config');
|
|
39
|
-
log?.info('Using environment:', chalk.redBright(options.environment));
|
|
40
|
-
try {
|
|
41
|
-
// Send a PUT request to publish the portal config for the specific build version
|
|
42
|
-
const response = await portalClient.json(`/portals/${portal.name}@${portal.version}/config`, {
|
|
43
|
-
method: 'PUT',
|
|
44
|
-
body: portalConfig,
|
|
45
|
-
});
|
|
46
|
-
log?.debug('Response:', response);
|
|
47
|
-
log?.succeed('Published portal config');
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
// Handle known HTTP errors with specific log messages
|
|
51
|
-
if (error instanceof HttpJsonResponseError) {
|
|
52
|
-
switch (error.response.status) {
|
|
53
|
-
case 410:
|
|
54
|
-
log?.fail('🤬', `Portal ${portal.name} is deleted from portals-service. Please check the portal key and try again.`);
|
|
55
|
-
break;
|
|
56
|
-
case 404:
|
|
57
|
-
log?.fail('🤬', `Portal ${portal.name} not found. Please check the portal key and try again.`);
|
|
58
|
-
break;
|
|
59
|
-
case 403:
|
|
60
|
-
case 401:
|
|
61
|
-
log?.fail('🤬', 'You are not authorized to publish portal config. Please check your permissions.');
|
|
62
|
-
break;
|
|
63
|
-
default:
|
|
64
|
-
log?.fail('🤬', 'Failed to publish portal config.', `Status code: ${error.response.status}`, `Message: ${error.response.statusText}`);
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// Rethrow error for upstream handling
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
// Export as default for compatibility with import patterns
|
|
73
|
-
export default publishPortalConfig;
|
|
74
|
-
//# sourceMappingURL=portal-config-publish.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-config-publish.js","sourceRoot":"","sources":["../../../src/bin/portal-config-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAErF,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAsB,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAc1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAmC,EAAE,EAAE;IAC/E,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEhC,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,oBAAoB,CAAC;QAC1D,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;KAC1C,CAAC,CAAC;IAEH,GAAG,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/C,mFAAmF;IACnF,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,GAAG,EAAE,OAAO,CAAC,WAAW;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IACH,GAAG,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE7C,4CAA4C;IAC5C,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9E,2DAA2D;IAC3D,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1C,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,GAAG,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,iFAAiF;QACjF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,SAAS,EAAE;YAC3F,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClC,GAAG,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sDAAsD;QACtD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC9B,KAAK,GAAG;oBACN,GAAG,EAAE,IAAI,CACP,IAAI,EACJ,UAAU,MAAM,CAAC,IAAI,8EAA8E,CACpG,CAAC;oBACF,MAAM;gBACR,KAAK,GAAG;oBACN,GAAG,EAAE,IAAI,CACP,IAAI,EACJ,UAAU,MAAM,CAAC,IAAI,wDAAwD,CAC9E,CAAC;oBACF,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,GAAG,EAAE,IAAI,CACP,IAAI,EACJ,iFAAiF,CAClF,CAAC;oBACF,MAAM;gBACR;oBACE,GAAG,EAAE,IAAI,CACP,IAAI,EACJ,kCAAkC,EAClC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EACvC,YAAY,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CACxC,CAAC;oBACF,MAAM;YACV,CAAC;QACH,CAAC;QACD,sCAAsC;QACtC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,2DAA2D;AAC3D,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { writeFile } from '../lib/utils';
|
|
2
|
-
import { formatPath } from './utils';
|
|
3
|
-
import { resolveProjectPackage } from './helpers/resolve-project-package.js';
|
|
4
|
-
import { resolvePortalConfig } from './helpers/resolve-portal-config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Generates the portal configuration object for the current project.
|
|
7
|
-
*
|
|
8
|
-
* This function resolves the portal package, sets up the runtime environment, resolves the portal config,
|
|
9
|
-
* and optionally writes the config to a file if an output path is provided. Logging is supported for
|
|
10
|
-
* debugging and progress tracking.
|
|
11
|
-
*
|
|
12
|
-
* @param options - Optional settings for logger, environment overrides, config path, and output file.
|
|
13
|
-
* @returns An object containing the generated config and the resolved package info.
|
|
14
|
-
* @throws If writing the config to file fails.
|
|
15
|
-
* @public
|
|
16
|
-
*/
|
|
17
|
-
export const generatePortalConfig = async (options) => {
|
|
18
|
-
const { log } = options ?? {};
|
|
19
|
-
// Resolve the portal's package.json for root and metadata
|
|
20
|
-
const pkg = await resolveProjectPackage(log);
|
|
21
|
-
// Setup the runtime environment for config resolution
|
|
22
|
-
const env = {
|
|
23
|
-
command: 'build',
|
|
24
|
-
mode: process.env.NODE_ENV ?? 'production',
|
|
25
|
-
root: pkg.root,
|
|
26
|
-
...options?.env, // Allow overrides from options
|
|
27
|
-
};
|
|
28
|
-
// Resolve the portal config using the environment and config path
|
|
29
|
-
const config = await resolvePortalConfig(env, { log, config: options?.config });
|
|
30
|
-
log?.debug('config:', config);
|
|
31
|
-
// If an output path is provided, write the config to file
|
|
32
|
-
if (options?.output) {
|
|
33
|
-
log?.start('writing config to file');
|
|
34
|
-
try {
|
|
35
|
-
// Write the config as pretty-printed JSON
|
|
36
|
-
await writeFile(options.output, JSON.stringify(config, null, 2));
|
|
37
|
-
log?.succeed('config written successfully', formatPath(options.output, { relative: true }));
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
// Log and rethrow errors encountered during file write
|
|
41
|
-
log?.fail('failed to write config');
|
|
42
|
-
throw error;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// Return the generated config and resolved package info for further use
|
|
46
|
-
return { config, pkg };
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=portal-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-config.js","sourceRoot":"","sources":["../../../src/bin/portal-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAsB,MAAM,SAAS,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AA8BzE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAqC,EAAE,EAAE;IAClF,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,sDAAsD;IACtD,MAAM,GAAG,GAAe;QACtB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QAC1C,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,OAAO,EAAE,GAAG,EAAE,+BAA+B;KACjD,CAAC;IAEF,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9B,0DAA0D;IAC1D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,GAAG,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,GAAG,EAAE,OAAO,CAAC,6BAA6B,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { createDevServer } from './utils';
|
|
2
|
-
import { resolveProjectPackage } from './helpers/resolve-project-package.js';
|
|
3
|
-
import { resolvePortalManifest } from './helpers/resolve-portal-manifest.js';
|
|
4
|
-
import { resolvePortalConfig } from './helpers/resolve-portal-config.js';
|
|
5
|
-
/**
|
|
6
|
-
* Starts the portal development server for local development and testing.
|
|
7
|
-
*
|
|
8
|
-
* This function sets up the runtime environment, resolves the portal manifest and config,
|
|
9
|
-
* and launches a development server using the resolved configuration. It provides detailed
|
|
10
|
-
* logging for each step and returns the dev server instance for further use.
|
|
11
|
-
*
|
|
12
|
-
* @param options - Settings for environment, manifest path, config path, logger, and server options.
|
|
13
|
-
* @returns The dev server instance after it has started.
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
16
|
-
export const startPortalDevServer = async (options) => {
|
|
17
|
-
const { log } = options ?? {};
|
|
18
|
-
// Resolve the portals's package.json for root and metadata
|
|
19
|
-
const pkg = await resolveProjectPackage(log);
|
|
20
|
-
// Setup the runtime environment for the dev server
|
|
21
|
-
const env = {
|
|
22
|
-
root: pkg.root,
|
|
23
|
-
environment: 'local', // Always use 'local' for dev server
|
|
24
|
-
...options?.env, // Allow overrides from options
|
|
25
|
-
mode: 'development', // Force development mode
|
|
26
|
-
command: 'serve', // Command is always 'serve' for dev
|
|
27
|
-
};
|
|
28
|
-
// Resolve the portal manifest using the environment and manifest path
|
|
29
|
-
const portalManifest = await resolvePortalManifest(env, pkg, {
|
|
30
|
-
log,
|
|
31
|
-
manifestPath: options?.manifest,
|
|
32
|
-
});
|
|
33
|
-
// Resolve the portal config (replace with real logic as needed)
|
|
34
|
-
const portalConfig = await resolvePortalConfig(env, { log, config: options?.config });
|
|
35
|
-
log?.start('Starting app development server...');
|
|
36
|
-
// Create the dev server configuration, including portal and server settings
|
|
37
|
-
const devServer = await createDevServer(env, {
|
|
38
|
-
template: {
|
|
39
|
-
portal: {
|
|
40
|
-
id: portalManifest.name,
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
portal: {
|
|
44
|
-
manifest: portalManifest,
|
|
45
|
-
config: portalConfig,
|
|
46
|
-
},
|
|
47
|
-
}, {
|
|
48
|
-
server: {
|
|
49
|
-
port: options?.server?.port,
|
|
50
|
-
fs: {
|
|
51
|
-
allow: [pkg.root], // Allow access to the root directory
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
await devServer.listen();
|
|
56
|
-
// Log the resolved local URL for the dev server
|
|
57
|
-
log?.succeed(`Started app development server on ${devServer.resolvedUrls?.local?.[0]}`);
|
|
58
|
-
// Return the dev server instance for further use
|
|
59
|
-
return devServer;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=portal-dev.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-dev.js","sourceRoot":"","sources":["../../../src/bin/portal-dev.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAsB,MAAM,SAAS,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAuB1C,EAAE,EAAE;IACH,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE9B,2DAA2D;IAC3D,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,mDAAmD;IACnD,MAAM,GAAG,GAAe;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,OAAO,EAAE,oCAAoC;QAC1D,GAAG,OAAO,EAAE,GAAG,EAAE,+BAA+B;QAChD,IAAI,EAAE,aAAa,EAAE,yBAAyB;QAC9C,OAAO,EAAE,OAAO,EAAE,oCAAoC;KACvD,CAAC;IAEF,sEAAsE;IACtE,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE;QAC3D,GAAG;QACH,YAAY,EAAE,OAAO,EAAE,QAAQ;KAChC,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtF,GAAG,EAAE,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAEjD,4EAA4E;IAC5E,MAAM,SAAS,GAAG,MAAM,eAAe,CACrC,GAAG,EACH;QACE,QAAQ,EAAE;YACR,MAAM,EAAE;gBACN,EAAE,EAAE,cAAc,CAAC,IAAI;aACxB;SACF;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,YAAY;SACrB;KACF,EACD;QACE,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;YAC3B,EAAE,EAAE;gBACF,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,qCAAqC;aACzD;SACF;KACF,CACF,CAAC;IAEF,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;IAEzB,gDAAgD;IAChD,GAAG,EAAE,OAAO,CAAC,qCAAqC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAExF,iDAAiD;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { resolvePortalManifest } from './helpers/resolve-portal-manifest.js';
|
|
2
|
-
import { resolveProjectPackage } from './helpers/resolve-project-package.js';
|
|
3
|
-
/**
|
|
4
|
-
* Loads and resolves the portal manifest based on the provided options.
|
|
5
|
-
*
|
|
6
|
-
* This function resolves the app package, sets up the runtime environment, and loads the portal manifest.
|
|
7
|
-
* Logging is supported for debugging and progress tracking. Returns the manifest, package, and environment.
|
|
8
|
-
*
|
|
9
|
-
* @param options - The options for resolving the portal manifest.
|
|
10
|
-
* @returns An object containing the resolved manifest, package, and runtime environment.
|
|
11
|
-
* @throws Will throw an error if resolving the application package or manifest fails.
|
|
12
|
-
* @public
|
|
13
|
-
*/
|
|
14
|
-
export const loadPortalManifest = async (options) => {
|
|
15
|
-
const { log } = options ?? {};
|
|
16
|
-
// Resolve the application's package.json for root and metadata
|
|
17
|
-
const pkg = await resolveProjectPackage(log);
|
|
18
|
-
log?.debug('package', pkg);
|
|
19
|
-
// Setup the runtime environment for manifest resolution
|
|
20
|
-
const env = {
|
|
21
|
-
command: 'build',
|
|
22
|
-
mode: process.env.NODE_ENV ?? 'production',
|
|
23
|
-
root: pkg.root,
|
|
24
|
-
...options?.env, // Allow overrides from options
|
|
25
|
-
};
|
|
26
|
-
log?.debug('env:', env);
|
|
27
|
-
// Resolve the portal manifest using the environment and manifest path
|
|
28
|
-
const manifest = await resolvePortalManifest(env, pkg, {
|
|
29
|
-
log,
|
|
30
|
-
manifestPath: options?.manifest,
|
|
31
|
-
});
|
|
32
|
-
log?.debug('manifest:', manifest);
|
|
33
|
-
// Return the resolved manifest, package, and environment for further use
|
|
34
|
-
return { manifest, pkg, env };
|
|
35
|
-
};
|
|
36
|
-
// Export as default for compatibility with import patterns
|
|
37
|
-
export default loadPortalManifest;
|
|
38
|
-
//# sourceMappingURL=portal-manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-manifest.js","sourceRoot":"","sources":["../../../src/bin/portal-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AA0B7E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAqC,EAAE,EAAE;IAChF,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE9B,+DAA+D;IAC/D,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3B,wDAAwD;IACxD,MAAM,GAAG,GAAe;QACtB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QAC1C,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,OAAO,EAAE,GAAG,EAAE,+BAA+B;KACjD,CAAC;IAEF,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAExB,sEAAsE;IACtE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE;QACrD,GAAG;QACH,YAAY,EAAE,OAAO,EAAE,QAAQ;KAChC,CAAC,CAAC;IAEH,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElC,yEAAyE;IACzE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,2DAA2D;AAC3D,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { loadPortalSchema } from '../lib/portal';
|
|
2
|
-
import { pack } from './pack';
|
|
3
|
-
import { buildPortal } from './portal-build';
|
|
4
|
-
/**
|
|
5
|
-
* Bundles the portal into an archive for distribution or deployment.
|
|
6
|
-
*
|
|
7
|
-
* This function builds the portal, validates the manifest, loads the schema, and creates an archive containing
|
|
8
|
-
* the portal manifest, schema, and metadata. Handles errors and logs progress for maintainability and debugging.
|
|
9
|
-
*
|
|
10
|
-
* @param options - Options for logger, manifest path, schema path, and archive name.
|
|
11
|
-
* @returns An object containing the archive path, portal manifest, and schema.
|
|
12
|
-
* @throws If the manifest build config is missing or packaging fails.
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
export const bundlePortal = async (options) => {
|
|
16
|
-
const { log, manifest } = options;
|
|
17
|
-
// Setup a default runtime environment for the build
|
|
18
|
-
const env = {
|
|
19
|
-
command: 'build',
|
|
20
|
-
mode: process.env.NODE_ENV ?? 'production',
|
|
21
|
-
environment: null,
|
|
22
|
-
root: process.cwd(),
|
|
23
|
-
};
|
|
24
|
-
// Build the portal and retrieve the manifest and package info
|
|
25
|
-
const { pkg, manifest: portalManifest } = await buildPortal({
|
|
26
|
-
log,
|
|
27
|
-
manifest,
|
|
28
|
-
});
|
|
29
|
-
// Ensure the manifest contains build configuration
|
|
30
|
-
if (!portalManifest.build) {
|
|
31
|
-
throw new Error('Manifest build config not found');
|
|
32
|
-
}
|
|
33
|
-
// Load the portal schema for validation and inclusion in the archive
|
|
34
|
-
const schemaResult = await loadPortalSchema(env, { file: options?.schema });
|
|
35
|
-
log?.debug('Schema:', schemaResult);
|
|
36
|
-
// Create the archive with the portal manifest, schema, and metadata
|
|
37
|
-
const result = await pack(pkg, {
|
|
38
|
-
log,
|
|
39
|
-
archive: options?.archive,
|
|
40
|
-
content: {
|
|
41
|
-
'portal-template-manifest.json': JSON.stringify(portalManifest.build, null, 2),
|
|
42
|
-
'portal.schema.json': JSON.stringify(schemaResult.schema, null, 2),
|
|
43
|
-
'metadata.json': JSON.stringify({
|
|
44
|
-
name: portalManifest.name,
|
|
45
|
-
version: portalManifest.build.version,
|
|
46
|
-
}),
|
|
47
|
-
},
|
|
48
|
-
}).catch((error) => {
|
|
49
|
-
// Log and exit if packaging fails
|
|
50
|
-
log?.error('Failed to create package:', error);
|
|
51
|
-
process.exit(1);
|
|
52
|
-
});
|
|
53
|
-
// Return the archive path, manifest, and schema for further use
|
|
54
|
-
return {
|
|
55
|
-
archive: result,
|
|
56
|
-
manifest: portalManifest,
|
|
57
|
-
schema: schemaResult.schema,
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=portal-pack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-pack.js","sourceRoot":"","sources":["../../../src/bin/portal-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAwB7C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAA4B,EAAE,EAAE;IACjE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAElC,oDAAoD;IACpD,MAAM,GAAG,GAAe;QACtB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QAC1C,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;KACpB,CAAC;IAEF,8DAA8D;IAC9D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,WAAW,CAAC;QAC1D,GAAG;QACH,QAAQ;KACT,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,qEAAqE;IACrE,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEpC,oEAAoE;IACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE;QAC7B,GAAG;QACH,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,OAAO,EAAE;YACP,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO;aACtC,CAAC;SACH;KACF,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,kCAAkC;QAClC,GAAG,EAAE,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,gEAAgE;IAChE,OAAO;QACL,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,YAAY,CAAC,MAAM;KAC5B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { HttpJsonResponseError } from '@equinor/fusion-framework-module-http/errors';
|
|
2
|
-
import { chalk, formatPath } from './utils';
|
|
3
|
-
/**
|
|
4
|
-
* Allowed tags for portal versions in the portal service.
|
|
5
|
-
*
|
|
6
|
-
* - `latest`: Marks the most recent stable version of the portal template.
|
|
7
|
-
* - `preview`: Marks a pre-release or preview version for testing or review.
|
|
8
|
-
*
|
|
9
|
-
* Used by {@link tagPortal} to validate and apply version tags.
|
|
10
|
-
*
|
|
11
|
-
* @public
|
|
12
|
-
*/
|
|
13
|
-
export var AllowedTags;
|
|
14
|
-
(function (AllowedTags) {
|
|
15
|
-
AllowedTags["Latest"] = "latest";
|
|
16
|
-
AllowedTags["Preview"] = "preview";
|
|
17
|
-
})(AllowedTags || (AllowedTags = {}));
|
|
18
|
-
/**
|
|
19
|
-
* Tags a portal template version in the portal service with a specified tag (e.g., 'latest' or 'preview').
|
|
20
|
-
*
|
|
21
|
-
* This function validates input, creates a client for the portal service, and sends a tag request.
|
|
22
|
-
* It provides detailed logging and error handling for common failure scenarios.
|
|
23
|
-
*
|
|
24
|
-
* @param options - Tag, portal name, version, framework instance, and logger.
|
|
25
|
-
* @returns The result of the tag operation from the portal service.
|
|
26
|
-
* @throws If the tag, name, or version is invalid, or if the tag operation fails.
|
|
27
|
-
* @public
|
|
28
|
-
*/
|
|
29
|
-
export const tagPortal = async (options) => {
|
|
30
|
-
const { tag, name, version, framework, log } = options;
|
|
31
|
-
// Validate tag value
|
|
32
|
-
if (!['latest', 'preview'].includes(tag)) {
|
|
33
|
-
log?.fail('🤪', 'Invalid tag. Use "latest" or "preview".');
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
// Validate portal name
|
|
37
|
-
if (!name) {
|
|
38
|
-
log?.fail('🤪', 'Application name is required.');
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
// Validate version
|
|
42
|
-
if (!version) {
|
|
43
|
-
log?.fail('🤪', 'Version is required.');
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
// Log the tagging action for traceability
|
|
47
|
-
log?.info('Tagging application:', chalk.greenBright(`${name}@${tag}`, version));
|
|
48
|
-
// Create a client for the 'portal-config' service
|
|
49
|
-
const client = await framework.serviceDiscovery.createClient('portal-config');
|
|
50
|
-
// Subscribe to outgoing requests for logging and debugging
|
|
51
|
-
client.request$.subscribe((request) => {
|
|
52
|
-
log?.debug('Request:', request);
|
|
53
|
-
log?.info('🌎', 'Executing request to:', formatPath(request.uri));
|
|
54
|
-
});
|
|
55
|
-
log?.start('Tagging portal template...');
|
|
56
|
-
try {
|
|
57
|
-
// Send a PUT request to tag the portal template version
|
|
58
|
-
const response = await client.json(`/templates/${name}/tags/${tag}`, {
|
|
59
|
-
method: 'PUT',
|
|
60
|
-
body: { version },
|
|
61
|
-
});
|
|
62
|
-
log?.debug('Response:', response);
|
|
63
|
-
log?.succeed('Tagged portal template successfully');
|
|
64
|
-
log?.info('🚀', JSON.stringify(response));
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
// Handle known HTTP errors with specific log messages
|
|
68
|
-
if (error instanceof HttpJsonResponseError) {
|
|
69
|
-
const { data, response } = error;
|
|
70
|
-
log?.debug('Error:', data);
|
|
71
|
-
if (data) {
|
|
72
|
-
log?.warn(chalk.red(`🤯 error: ${data.code}\n`), chalk.yellowBright(data.message), '\n');
|
|
73
|
-
}
|
|
74
|
-
switch (response?.status) {
|
|
75
|
-
case 410:
|
|
76
|
-
log?.fail(`🤬 - ${response?.status} -`, `${name} is deleted. Please check the name and try again.`);
|
|
77
|
-
break;
|
|
78
|
-
case 404:
|
|
79
|
-
log?.fail(`🤬 - ${response?.status} -`, `${name} not found. Please check the name and try again.`);
|
|
80
|
-
break;
|
|
81
|
-
case 403:
|
|
82
|
-
case 401:
|
|
83
|
-
log?.fail(`🤬 - ${response?.status} -`, 'You are not authorized to tag. Please check your permissions.');
|
|
84
|
-
break;
|
|
85
|
-
default:
|
|
86
|
-
log?.fail(`🤬 - ${response?.status} -`, 'Failed to tag', `Error: ${error.message}`);
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Rethrow error for upstream handling
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
// Export as default for compatibility with import patterns
|
|
95
|
-
export default tagPortal;
|
|
96
|
-
//# sourceMappingURL=portal-tag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-tag.js","sourceRoot":"","sources":["../../../src/bin/portal-tag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import AdmZip from 'adm-zip';
|
|
2
|
-
import { chalk } from './utils';
|
|
3
|
-
import { loadMetadata } from './helpers/load-bundle-metadata';
|
|
4
|
-
/**
|
|
5
|
-
* Uploads a portal bundle to the portal service for publishing or updating a portal template.
|
|
6
|
-
*
|
|
7
|
-
* This function loads the bundle, resolves the portal name (from argument or metadata),
|
|
8
|
-
* reads the bundle content, and uploads it to the portal service. Handles and logs errors
|
|
9
|
-
* for common failure scenarios, including HTTP status codes and bundle reading issues.
|
|
10
|
-
*
|
|
11
|
-
* @param opt - Options for bundle file, portal name, framework, and logger.
|
|
12
|
-
* @returns A promise that resolves when the upload is complete.
|
|
13
|
-
* @throws If bundle reading or upload fails, or if the portal service returns an error status.
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
16
|
-
export const uploadPortalBundle = async (opt) => {
|
|
17
|
-
const { log, framework } = opt;
|
|
18
|
-
// Load the bundle from file or use the provided AdmZip instance
|
|
19
|
-
const bundle = typeof opt.fileOrBundle === 'string' ? new AdmZip(opt.fileOrBundle) : opt.fileOrBundle;
|
|
20
|
-
// Resolve the portal name from argument or bundle metadata
|
|
21
|
-
const { name } = opt.name
|
|
22
|
-
? { name: opt.name }
|
|
23
|
-
: await loadMetadata(bundle).catch((error) => {
|
|
24
|
-
log?.error('Failed to resolve manifest:', error);
|
|
25
|
-
process.exit(1);
|
|
26
|
-
});
|
|
27
|
-
// Read the bundle content as a buffer
|
|
28
|
-
const content = await bundle.toBufferPromise().catch((error) => {
|
|
29
|
-
log?.error('Failed to read bundle content:', error);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
});
|
|
32
|
-
try {
|
|
33
|
-
// Create a client for the 'portal-config' service
|
|
34
|
-
const appClient = await framework.serviceDiscovery.createClient('portal-config');
|
|
35
|
-
// Subscribe to outgoing requests for logging and debugging
|
|
36
|
-
appClient.request$.subscribe((request) => {
|
|
37
|
-
log?.info('🌎', 'Executing request to:', request.uri);
|
|
38
|
-
log?.debug('Request:', request);
|
|
39
|
-
});
|
|
40
|
-
// Upload the bundle as a zip file to the portal service
|
|
41
|
-
const response = await appClient.fetch(`/bundles/templates/${name}`, {
|
|
42
|
-
method: 'POST',
|
|
43
|
-
body: new Blob([content], {
|
|
44
|
-
type: 'application/zip',
|
|
45
|
-
}),
|
|
46
|
-
headers: {
|
|
47
|
-
'Content-Type': 'application/zip',
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
// Handle non-OK responses with detailed error logging
|
|
51
|
-
if (!response.ok) {
|
|
52
|
-
try {
|
|
53
|
-
const { error } = await response.json();
|
|
54
|
-
log?.debug('Error:', error);
|
|
55
|
-
if (error.message) {
|
|
56
|
-
log?.warn(chalk.red(`🤯 error: ${error.code}\n`), chalk.yellowBright(error.message), '\n');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
log?.debug('Error:', response.statusText);
|
|
61
|
-
}
|
|
62
|
-
// Handle specific HTTP status codes for user-friendly error messages
|
|
63
|
-
if (response.status === 409) {
|
|
64
|
-
log?.fail(`🤬 - ${response.status} - `, 'Version is already published, please generate a new release');
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
if (response.status === 410) {
|
|
68
|
-
log?.fail(`🤬 - ${response.status} - `, `${name} is removed from Fusion`);
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
if (response.status === 404) {
|
|
72
|
-
log?.fail(`🤬 - ${response.status} - `, `${name} not found`);
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
if (response.status === 401 || response.status === 403) {
|
|
76
|
-
log?.fail(`🤬 - ${response.status} - `, `This is not allowed for your role on ${name}`);
|
|
77
|
-
process.exit(1);
|
|
78
|
-
}
|
|
79
|
-
if (response.status === 500) {
|
|
80
|
-
log?.fail(`🤬 - ${response.status} - `, 'Internal server error, please try again later or contact support');
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
// Throw for any other error status
|
|
84
|
-
throw new Error(`Failed to upload bundle. HTTP status ${response.status}, ${response.statusText}`);
|
|
85
|
-
}
|
|
86
|
-
// Log and return the successful response
|
|
87
|
-
log?.succeed('Successfully uploaded application bundle');
|
|
88
|
-
log?.debug('Response:', response);
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
// Log and exit on any error during upload
|
|
92
|
-
log?.fail('🙅♂️', 'Failed to upload application bundle');
|
|
93
|
-
log?.error(error);
|
|
94
|
-
process.exit(1);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
// Export as default for compatibility with import patterns
|
|
98
|
-
export default uploadPortalBundle;
|
|
99
|
-
//# sourceMappingURL=portal-upload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portal-upload.js","sourceRoot":"","sources":["../../../src/bin/portal-upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
// ConsoleLogger provides a unified interface for logging and spinner-based feedback in CLI tools.
|
|
2
|
-
// It wraps a Spinner instance and exposes methods for different log levels and progress reporting.
|
|
3
|
-
import { Spinner } from './spinner.js';
|
|
4
|
-
/**
|
|
5
|
-
* ConsoleLogger is a utility class for logging progress, status, and debug information in CLI applications.
|
|
6
|
-
* It uses a spinner for visual feedback and supports debug mode for verbose output.
|
|
7
|
-
*
|
|
8
|
-
* @remarks
|
|
9
|
-
* This class is designed for CLI tools that require both spinner-based progress indication and
|
|
10
|
-
* structured logging at various levels (info, warn, error, debug).
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const logger = new ConsoleLogger('My CLI', { debug: true });
|
|
15
|
-
* logger.start('Starting task...');
|
|
16
|
-
* logger.succeed('Task complete!');
|
|
17
|
-
* logger.debug('Debug info');
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export class ConsoleLogger {
|
|
21
|
-
/**
|
|
22
|
-
* The spinner instance used for progress and status messages.
|
|
23
|
-
*/
|
|
24
|
-
spinner;
|
|
25
|
-
/**
|
|
26
|
-
* Indicates if debug mode is enabled for verbose output.
|
|
27
|
-
*/
|
|
28
|
-
debugMode;
|
|
29
|
-
/**
|
|
30
|
-
* Creates a new ConsoleLogger.
|
|
31
|
-
* @param title - Prefix for spinner/log messages.
|
|
32
|
-
* @param options - Optional debug flag.
|
|
33
|
-
*/
|
|
34
|
-
constructor(title, options) {
|
|
35
|
-
this.spinner = new Spinner({ prefixText: title });
|
|
36
|
-
this.debugMode = options?.debug ?? false;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Start the spinner with a message.
|
|
40
|
-
* @param args - Message parts to display.
|
|
41
|
-
*/
|
|
42
|
-
start(...args) {
|
|
43
|
-
this.spinner.start(...args);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Mark spinner as succeeded with a message.
|
|
47
|
-
* @param args - Message parts to display.
|
|
48
|
-
*/
|
|
49
|
-
succeed(...args) {
|
|
50
|
-
this.spinner.succeed(...args);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Mark spinner as failed with a message.
|
|
54
|
-
* @param args - Message parts to display.
|
|
55
|
-
*/
|
|
56
|
-
fail(...args) {
|
|
57
|
-
this.spinner.fail(...args);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Log an error message to the console.
|
|
61
|
-
* @param args - Error message parts.
|
|
62
|
-
*/
|
|
63
|
-
// biome-ignore lint/suspicious/noExplicitAny: same as original
|
|
64
|
-
error(...args) {
|
|
65
|
-
console.log(...args);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Log a warning message.
|
|
69
|
-
* @param args - Warning message parts.
|
|
70
|
-
*/
|
|
71
|
-
warn(...args) {
|
|
72
|
-
this.spinner.warn(...args);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Log an informational message.
|
|
76
|
-
* @param args - Info message parts.
|
|
77
|
-
*/
|
|
78
|
-
info(...args) {
|
|
79
|
-
this.spinner.info(...args);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Alias for info.
|
|
83
|
-
* @param args - Info message parts.
|
|
84
|
-
*/
|
|
85
|
-
log(...args) {
|
|
86
|
-
this.spinner.info(...args);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Log debug messages if debugMode is enabled.
|
|
90
|
-
* @param args - Debug message parts.
|
|
91
|
-
*/
|
|
92
|
-
// biome-ignore lint/suspicious/noExplicitAny: same as original
|
|
93
|
-
debug(...args) {
|
|
94
|
-
if (this.debugMode) {
|
|
95
|
-
console.debug(...args);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Attach spinner to native console output.
|
|
100
|
-
*/
|
|
101
|
-
startNativeConsoleCapture() {
|
|
102
|
-
this.spinner.attachConsole = true;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Detach spinner from native console output.
|
|
106
|
-
*/
|
|
107
|
-
stopNativeConsoleCapture() {
|
|
108
|
-
this.spinner.attachConsole = false;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
export default ConsoleLogger;
|
|
112
|
-
//# sourceMappingURL=ConsoleLogger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleLogger.js","sourceRoot":"","sources":["../../../../src/bin/utils/ConsoleLogger.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,mGAAmG;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACxB;;OAEG;IACa,OAAO,CAAU;IACjC;;OAEG;IACa,SAAS,CAAU;IAEnC;;;;OAIG;IACH,YAAY,KAAa,EAAE,OAA6B;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IAC3C,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,GAAG,IAAc;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACH,OAAO,CAAC,GAAG,IAAc;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAChC,CAAC;IACD;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAc;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD;;;OAGG;IACH,+DAA+D;IAC/D,KAAK,CAAC,GAAG,IAAW;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAc;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAc;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD;;;OAGG;IACH,GAAG,CAAC,GAAG,IAAc;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD;;;OAGG;IACH,+DAA+D;IAC/D,KAAK,CAAC,GAAG,IAAW;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD;;OAEG;IACH,yBAAyB;QACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IACpC,CAAC;IACD;;OAEG;IACH,wBAAwB;QACtB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IACrC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|