@equinor/fusion-framework-cli 11.0.0-next.15 → 11.0.0-next.17

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.
Files changed (214) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/bin/build/bin.mjs +1 -0
  3. package/bin/build/cli.mjs +7 -0
  4. package/bin/build/create-auth-client-Ds0jZb_X.js +1 -0
  5. package/bin/build/index-DZEz5jYv.js +1 -0
  6. package/bin/cli.mjs +1 -1
  7. package/dist/esm/lib/app/app-config.js.map +1 -1
  8. package/dist/esm/lib/app/app-manifest.js.map +1 -1
  9. package/dist/esm/lib/app/app-package.js +1 -1
  10. package/dist/esm/lib/app/app-package.js.map +1 -1
  11. package/dist/esm/lib/app/merge-app-config.js +11 -5
  12. package/dist/esm/lib/app/merge-app-config.js.map +1 -1
  13. package/dist/esm/lib/app/merge-app-manifest.js +2 -2
  14. package/dist/esm/lib/app/merge-app-manifest.js.map +1 -1
  15. package/dist/esm/lib/index.js +3 -1
  16. package/dist/esm/lib/index.js.map +1 -1
  17. package/dist/esm/lib/merge-dev-server-config.js +2 -20
  18. package/dist/esm/lib/merge-dev-server-config.js.map +1 -1
  19. package/dist/esm/lib/portal/create-portal-manifest.js.map +1 -1
  20. package/dist/esm/lib/portal/load-portal-manifest.js +2 -2
  21. package/dist/esm/lib/portal/load-portal-manifest.js.map +1 -1
  22. package/dist/esm/lib/portal/load-portal-schema.js.map +1 -1
  23. package/dist/esm/lib/utils/index.js +1 -0
  24. package/dist/esm/lib/utils/index.js.map +1 -1
  25. package/dist/esm/lib/utils/resolve-annotations.js +2 -2
  26. package/dist/esm/lib/utils/resolve-annotations.js.map +1 -1
  27. package/dist/esm/lib/utils/resolve-devops-annotations.js +2 -2
  28. package/dist/esm/lib/utils/resolve-devops-annotations.js.map +1 -1
  29. package/dist/esm/lib/utils/resolve-git-commit-sha.js +1 -0
  30. package/dist/esm/lib/utils/resolve-git-commit-sha.js.map +1 -1
  31. package/dist/esm/lib/utils/resolve-github-annotations.js +2 -2
  32. package/dist/esm/lib/utils/resolve-github-annotations.js.map +1 -1
  33. package/dist/esm/version.js +1 -1
  34. package/dist/types/bin/app-build.d.ts +2 -2
  35. package/dist/types/bin/app-check.d.ts +2 -2
  36. package/dist/types/bin/app-config-publish.d.ts +2 -2
  37. package/dist/types/bin/app-config.d.ts +3 -3
  38. package/dist/types/bin/app-dev.d.ts +1 -1
  39. package/dist/types/bin/app-manifest.d.ts +3 -3
  40. package/dist/types/bin/app-pack.d.ts +1 -1
  41. package/dist/types/bin/app-tag.d.ts +3 -3
  42. package/dist/types/bin/app-upload.d.ts +2 -2
  43. package/dist/types/bin/helpers/load-vite-config.d.ts +1 -2
  44. package/dist/types/bin/helpers/resolve-app-config.d.ts +3 -3
  45. package/dist/types/bin/helpers/resolve-app-manifest.d.ts +3 -3
  46. package/dist/types/bin/helpers/resolve-portal-config.d.ts +3 -3
  47. package/dist/types/bin/helpers/resolve-portal-manifest.d.ts +3 -4
  48. package/dist/types/bin/helpers/resolve-project-package.d.ts +2 -2
  49. package/dist/types/bin/index.d.ts +9 -0
  50. package/dist/types/bin/pack.d.ts +1 -1
  51. package/dist/types/bin/portal-build.d.ts +5 -5
  52. package/dist/types/bin/portal-config-publish.d.ts +2 -2
  53. package/dist/types/bin/portal-config.d.ts +4 -4
  54. package/dist/types/bin/portal-dev.d.ts +2 -2
  55. package/dist/types/bin/portal-manifest.d.ts +4 -4
  56. package/dist/types/bin/portal-pack.d.ts +3 -3
  57. package/dist/types/bin/portal-tag.d.ts +2 -2
  58. package/dist/types/bin/portal-upload.d.ts +2 -2
  59. package/dist/types/bin/utils/create-dev-server.d.ts +1 -1
  60. package/dist/types/cli/commands/disco/resolve.d.ts +1 -1
  61. package/dist/types/cli/main.d.ts +0 -20
  62. package/dist/types/cli/options/env.d.ts +1 -2
  63. package/dist/types/lib/app/app-config.d.ts +2 -2
  64. package/dist/types/lib/app/app-manifest.d.ts +1 -1
  65. package/dist/types/lib/app/merge-app-config.d.ts +1 -1
  66. package/dist/types/lib/app/merge-app-manifest.d.ts +1 -1
  67. package/dist/types/lib/index.d.ts +3 -2
  68. package/dist/types/lib/legacy.d.ts +1 -1
  69. package/dist/types/lib/merge-dev-server-config.d.ts +1 -1
  70. package/dist/types/lib/portal/create-portal-manifest.d.ts +1 -1
  71. package/dist/types/lib/portal/load-portal-manifest.d.ts +1 -1
  72. package/dist/types/lib/portal/load-portal-schema.d.ts +1 -1
  73. package/dist/types/lib/portal/portal-config.d.ts +1 -1
  74. package/dist/types/lib/portal/portal-manifest.schema.d.ts +6 -6
  75. package/dist/types/lib/utils/index.d.ts +1 -0
  76. package/dist/types/lib/utils/resolve-devops-annotations.d.ts +2 -2
  77. package/dist/types/lib/utils/resolve-git-commit-sha.d.ts +1 -0
  78. package/dist/types/lib/utils/resolve-github-annotations.d.ts +2 -2
  79. package/dist/types/version.d.ts +1 -1
  80. package/docs/migration-v10-to-v11.md +1 -1
  81. package/package.json +45 -24
  82. package/bin/build/bin.js +0 -28
  83. package/bin/build/cli.js +0 -10099
  84. package/bin/build/create-auth-client-CUsaZifS.js +0 -1415
  85. package/bin/build/portal-config-publish-8-d0BD44.js +0 -29623
  86. package/dist/esm/bin/app-build.js +0 -34
  87. package/dist/esm/bin/app-build.js.map +0 -1
  88. package/dist/esm/bin/app-check.js +0 -63
  89. package/dist/esm/bin/app-check.js.map +0 -1
  90. package/dist/esm/bin/app-config-publish.js +0 -89
  91. package/dist/esm/bin/app-config-publish.js.map +0 -1
  92. package/dist/esm/bin/app-config.js +0 -48
  93. package/dist/esm/bin/app-config.js.map +0 -1
  94. package/dist/esm/bin/app-dev.js +0 -102
  95. package/dist/esm/bin/app-dev.js.map +0 -1
  96. package/dist/esm/bin/app-manifest.js +0 -38
  97. package/dist/esm/bin/app-manifest.js.map +0 -1
  98. package/dist/esm/bin/app-pack.js +0 -51
  99. package/dist/esm/bin/app-pack.js.map +0 -1
  100. package/dist/esm/bin/app-tag.js +0 -89
  101. package/dist/esm/bin/app-tag.js.map +0 -1
  102. package/dist/esm/bin/app-upload.js +0 -109
  103. package/dist/esm/bin/app-upload.js.map +0 -1
  104. package/dist/esm/bin/helpers/load-bundle-metadata.js +0 -32
  105. package/dist/esm/bin/helpers/load-bundle-metadata.js.map +0 -1
  106. package/dist/esm/bin/helpers/load-vite-config.js +0 -55
  107. package/dist/esm/bin/helpers/load-vite-config.js.map +0 -1
  108. package/dist/esm/bin/helpers/resolve-app-config.js +0 -46
  109. package/dist/esm/bin/helpers/resolve-app-config.js.map +0 -1
  110. package/dist/esm/bin/helpers/resolve-app-manifest.js +0 -55
  111. package/dist/esm/bin/helpers/resolve-app-manifest.js.map +0 -1
  112. package/dist/esm/bin/helpers/resolve-portal-config.js +0 -46
  113. package/dist/esm/bin/helpers/resolve-portal-config.js.map +0 -1
  114. package/dist/esm/bin/helpers/resolve-portal-manifest.js +0 -55
  115. package/dist/esm/bin/helpers/resolve-portal-manifest.js.map +0 -1
  116. package/dist/esm/bin/helpers/resolve-project-package.js +0 -32
  117. package/dist/esm/bin/helpers/resolve-project-package.js.map +0 -1
  118. package/dist/esm/bin/index.js +0 -12
  119. package/dist/esm/bin/index.js.map +0 -1
  120. package/dist/esm/bin/pack.js +0 -70
  121. package/dist/esm/bin/pack.js.map +0 -1
  122. package/dist/esm/bin/portal-build.js +0 -40
  123. package/dist/esm/bin/portal-build.js.map +0 -1
  124. package/dist/esm/bin/portal-config-publish.js +0 -74
  125. package/dist/esm/bin/portal-config-publish.js.map +0 -1
  126. package/dist/esm/bin/portal-config.js +0 -48
  127. package/dist/esm/bin/portal-config.js.map +0 -1
  128. package/dist/esm/bin/portal-dev.js +0 -61
  129. package/dist/esm/bin/portal-dev.js.map +0 -1
  130. package/dist/esm/bin/portal-manifest.js +0 -38
  131. package/dist/esm/bin/portal-manifest.js.map +0 -1
  132. package/dist/esm/bin/portal-pack.js +0 -60
  133. package/dist/esm/bin/portal-pack.js.map +0 -1
  134. package/dist/esm/bin/portal-tag.js +0 -96
  135. package/dist/esm/bin/portal-tag.js.map +0 -1
  136. package/dist/esm/bin/portal-upload.js +0 -99
  137. package/dist/esm/bin/portal-upload.js.map +0 -1
  138. package/dist/esm/bin/utils/ConsoleLogger.js +0 -112
  139. package/dist/esm/bin/utils/ConsoleLogger.js.map +0 -1
  140. package/dist/esm/bin/utils/create-dev-server.js +0 -171
  141. package/dist/esm/bin/utils/create-dev-server.js.map +0 -1
  142. package/dist/esm/bin/utils/format.js +0 -47
  143. package/dist/esm/bin/utils/format.js.map +0 -1
  144. package/dist/esm/bin/utils/index.js +0 -5
  145. package/dist/esm/bin/utils/index.js.map +0 -1
  146. package/dist/esm/bin/utils/spinner.js +0 -142
  147. package/dist/esm/bin/utils/spinner.js.map +0 -1
  148. package/dist/esm/cli/commands/app/alias.js +0 -42
  149. package/dist/esm/cli/commands/app/alias.js.map +0 -1
  150. package/dist/esm/cli/commands/app/build.js +0 -53
  151. package/dist/esm/cli/commands/app/build.js.map +0 -1
  152. package/dist/esm/cli/commands/app/check.js +0 -57
  153. package/dist/esm/cli/commands/app/check.js.map +0 -1
  154. package/dist/esm/cli/commands/app/config.js +0 -103
  155. package/dist/esm/cli/commands/app/config.js.map +0 -1
  156. package/dist/esm/cli/commands/app/dev.js +0 -67
  157. package/dist/esm/cli/commands/app/dev.js.map +0 -1
  158. package/dist/esm/cli/commands/app/index.js +0 -42
  159. package/dist/esm/cli/commands/app/index.js.map +0 -1
  160. package/dist/esm/cli/commands/app/manifest.js +0 -82
  161. package/dist/esm/cli/commands/app/manifest.js.map +0 -1
  162. package/dist/esm/cli/commands/app/pack.js +0 -71
  163. package/dist/esm/cli/commands/app/pack.js.map +0 -1
  164. package/dist/esm/cli/commands/app/publish.js +0 -130
  165. package/dist/esm/cli/commands/app/publish.js.map +0 -1
  166. package/dist/esm/cli/commands/app/tag.js +0 -113
  167. package/dist/esm/cli/commands/app/tag.js.map +0 -1
  168. package/dist/esm/cli/commands/app/upload.js +0 -85
  169. package/dist/esm/cli/commands/app/upload.js.map +0 -1
  170. package/dist/esm/cli/commands/auth/index.js +0 -22
  171. package/dist/esm/cli/commands/auth/index.js.map +0 -1
  172. package/dist/esm/cli/commands/auth/login.js +0 -72
  173. package/dist/esm/cli/commands/auth/login.js.map +0 -1
  174. package/dist/esm/cli/commands/auth/logout.js +0 -58
  175. package/dist/esm/cli/commands/auth/logout.js.map +0 -1
  176. package/dist/esm/cli/commands/auth/token.js +0 -78
  177. package/dist/esm/cli/commands/auth/token.js.map +0 -1
  178. package/dist/esm/cli/commands/disco/index.js +0 -6
  179. package/dist/esm/cli/commands/disco/index.js.map +0 -1
  180. package/dist/esm/cli/commands/disco/resolve.js +0 -58
  181. package/dist/esm/cli/commands/disco/resolve.js.map +0 -1
  182. package/dist/esm/cli/commands/index.js +0 -11
  183. package/dist/esm/cli/commands/index.js.map +0 -1
  184. package/dist/esm/cli/commands/portal/build.js +0 -27
  185. package/dist/esm/cli/commands/portal/build.js.map +0 -1
  186. package/dist/esm/cli/commands/portal/config.js +0 -101
  187. package/dist/esm/cli/commands/portal/config.js.map +0 -1
  188. package/dist/esm/cli/commands/portal/dev.js +0 -27
  189. package/dist/esm/cli/commands/portal/dev.js.map +0 -1
  190. package/dist/esm/cli/commands/portal/index.js +0 -23
  191. package/dist/esm/cli/commands/portal/index.js.map +0 -1
  192. package/dist/esm/cli/commands/portal/manifest.js +0 -48
  193. package/dist/esm/cli/commands/portal/manifest.js.map +0 -1
  194. package/dist/esm/cli/commands/portal/pack.js +0 -40
  195. package/dist/esm/cli/commands/portal/pack.js.map +0 -1
  196. package/dist/esm/cli/commands/portal/publish.js +0 -76
  197. package/dist/esm/cli/commands/portal/publish.js.map +0 -1
  198. package/dist/esm/cli/commands/portal/schema.js +0 -70
  199. package/dist/esm/cli/commands/portal/schema.js.map +0 -1
  200. package/dist/esm/cli/commands/portal/tag.js +0 -73
  201. package/dist/esm/cli/commands/portal/tag.js.map +0 -1
  202. package/dist/esm/cli/commands/portal/upload.js +0 -41
  203. package/dist/esm/cli/commands/portal/upload.js.map +0 -1
  204. package/dist/esm/cli/main.js +0 -52
  205. package/dist/esm/cli/main.js.map +0 -1
  206. package/dist/esm/cli/options/auth.js +0 -96
  207. package/dist/esm/cli/options/auth.js.map +0 -1
  208. package/dist/esm/cli/options/env.js +0 -30
  209. package/dist/esm/cli/options/env.js.map +0 -1
  210. package/dist/esm/lib/framework.node.js +0 -104
  211. package/dist/esm/lib/framework.node.js.map +0 -1
  212. package/dist/esm/version.js.map +0 -1
  213. package/dist/tsconfig.tsbuildinfo +0 -1
  214. /package/dist/types/{lib → bin}/framework.node.d.ts +0 -0
@@ -1,34 +0,0 @@
1
- import { build as viteBuild } from 'vite';
2
- import chalk from 'chalk';
3
- import { loadViteConfig } from './helpers/load-vite-config.js';
4
- import loadAppManifest from './app-manifest';
5
- /**
6
- * Builds an application using Vite.
7
- *
8
- * Loads the application manifest, applies Vite configuration, and runs the Vite build process.
9
- *
10
- * @param opt - Build options including environment, manifest path, and logger.
11
- * @returns Output containing package info, manifest, and output directory.
12
- * @throws Will throw if the build process fails.
13
- * @public
14
- */
15
- export const buildApplication = async (opt) => {
16
- const { log } = opt ?? {};
17
- log?.log(chalk.bold('Starting to build application'));
18
- // Load application manifest, package info, and environment variables
19
- const { manifest, pkg, env } = await loadAppManifest({ log, manifest: opt?.manifest });
20
- log?.start('loading vite config...');
21
- // Load local Vite configuration for the build
22
- const viteConfig = await loadViteConfig(env, pkg);
23
- log?.succeed('vite config applied');
24
- log?.debug('vite config:', viteConfig);
25
- log?.start('🤞🏻', 'building application...');
26
- log?.startNativeConsoleCapture();
27
- await viteBuild(viteConfig);
28
- log?.stopNativeConsoleCapture();
29
- log?.succeed('build completed 😘');
30
- // Output directory for the built application
31
- const outDir = viteConfig.build.outDir;
32
- return { pkg, manifest, outDir };
33
- };
34
- //# sourceMappingURL=app-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-build.js","sourceRoot":"","sources":["../../../src/bin/app-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,eAAe,MAAM,gBAAgB,CAAC;AAwC7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAA6B,EACI,EAAE;IACnC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;IAE1B,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAEtD,qEAAqE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvF,GAAG,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACrC,8CAA8C;IAC9C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClD,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEvC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAC9C,GAAG,EAAE,yBAAyB,EAAE,CAAC;IACjC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5B,GAAG,EAAE,wBAAwB,EAAE,CAAC;IAChC,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAEvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC,CAAC"}
@@ -1,63 +0,0 @@
1
- import { initializeFramework, } from '../lib/framework.node.js';
2
- import { resolveProjectPackage } from './helpers/resolve-project-package.js';
3
- import { resolveAppManifest } from './helpers/resolve-app-manifest.js';
4
- /**
5
- * Checks if the application is registered in the app store.
6
- *
7
- * Resolves the app package and manifest, initializes the Fusion Framework, and queries the app store.
8
- *
9
- * @param options - Options for environment, authentication, and logging.
10
- * @returns A promise that resolves when the check is complete.
11
- * @public
12
- */
13
- export const checkApp = async (options) => {
14
- const { log } = options;
15
- // Resolve the application's package.json for metadata and dependencies
16
- const pkg = await resolveProjectPackage(log);
17
- // Resolve the application manifest for the build/production mode
18
- // Manifest contains the appKey and other app metadata
19
- const manifest = await resolveAppManifest({ command: 'build', mode: 'production' }, pkg, {
20
- log,
21
- });
22
- log?.start('Initializing Fusion Framework...');
23
- // Initialize the Fusion Framework with the provided environment and authentication
24
- // If the auth object contains a token, use it; otherwise, use the provided auth config
25
- const framework = await initializeFramework({
26
- env: options.environment,
27
- auth: 'token' in options.auth ? { token: options.auth.token } : options.auth,
28
- });
29
- log?.succeed('Initialized Fusion Framework');
30
- // Create a client for the 'apps' service using service discovery
31
- const appClient = await framework.serviceDiscovery.createClient('apps');
32
- // Subscribe to outgoing requests for logging and debugging
33
- appClient.request$.subscribe((request) => {
34
- log?.info('🌎', 'Executing request to:', request.uri);
35
- log?.debug('Request:', request);
36
- });
37
- try {
38
- // Start the check for app registration in the app store
39
- log?.start(`Checking if ${manifest.appKey} is registered in app store`);
40
- // Send a HEAD request to check if the app is registered
41
- const response = await appClient.fetch(`/apps/${manifest.appKey}`, {
42
- method: 'HEAD',
43
- });
44
- // If the response is OK, the app is registered
45
- if (response.ok) {
46
- return log?.succeed('😃', `Application ${manifest.appKey} is registered in app store`);
47
- }
48
- // If the response is 404, the app is not registered
49
- if (response.status === 404) {
50
- return log?.fail('😞', `Application ${manifest.appKey} is not registered in app store`);
51
- }
52
- // Any other status is unexpected and should be handled as an error
53
- throw new Error(`Unexpected response status: ${response.status}`);
54
- }
55
- catch (err) {
56
- // Log and handle errors during the registration check
57
- log?.fail('🙅‍♂️', 'Error checking application registration');
58
- log?.error('Error checking application registration:', err);
59
- }
60
- };
61
- // Export as default for compatibility with import patterns
62
- export default checkApp;
63
- //# sourceMappingURL=app-check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-check.js","sourceRoot":"","sources":["../../../src/bin/app-check.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAqBvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAwB,EAAE,EAAE;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExB,uEAAuE;IACvE,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,iEAAiE;IACjE,sDAAsD;IACtD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;QACvF,GAAG;KACJ,CAAC,CAAC;IAEH,GAAG,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/C,mFAAmF;IACnF,uFAAuF;IACvF,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,GAAG,EAAE,OAAO,CAAC,WAAW;QACxB,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;KAC7E,CAAC,CAAC;IACH,GAAG,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE7C,iEAAiE;IACjE,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAExE,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;QACvC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtD,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,wDAAwD;QACxD,GAAG,EAAE,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,6BAA6B,CAAC,CAAC;QACxE,wDAAwD;QACxD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,EAAE;YACjE,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,+CAA+C;QAC/C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,QAAQ,CAAC,MAAM,6BAA6B,CAAC,CAAC;QACzF,CAAC;QACD,oDAAoD;QACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,QAAQ,CAAC,MAAM,iCAAiC,CAAC,CAAC;QAC1F,CAAC;QACD,mEAAmE;QACnE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sDAAsD;QACtD,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;QAC9D,GAAG,EAAE,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAEF,2DAA2D;AAC3D,eAAe,QAAQ,CAAC"}
@@ -1,89 +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 { generateApplicationConfig } from './app-config.js';
5
- import { loadAppManifest } from './app-manifest.js';
6
- /**
7
- * Publishes the application configuration to the app store for a specific build version.
8
- *
9
- * This function generates the application config, loads the manifest, initializes the Fusion Framework,
10
- * and sends the config to the app service. Handles and logs errors for common failure scenarios.
11
- *
12
- * @param options - Options for config, manifest, environment, authentication, and logging.
13
- * @returns A promise that resolves when publishing is complete.
14
- * @throws If the build version is missing or publishing fails.
15
- * @public
16
- */
17
- export const publishAppConfig = async (options) => {
18
- const { log } = options;
19
- // Generate the application config using provided options and environment
20
- const { config: appConfig } = await generateApplicationConfig({
21
- log,
22
- config: options.config,
23
- env: { environment: options.environment },
24
- });
25
- // Load the application manifest for the specified environment
26
- const { manifest: appManifest } = await loadAppManifest({
27
- log,
28
- manifest: options.manifest,
29
- env: { environment: options.environment },
30
- });
31
- // Extract the build version from the manifest
32
- const appVersion = appManifest.build?.version;
33
- if (!appVersion) {
34
- // Fail if no build version is found in the manifest
35
- const error = new Error('No build version found in the manifest. Please make sure the manifest is valid.');
36
- log?.fail('🤪', error.message);
37
- throw error;
38
- }
39
- log?.start('Initializing Fusion Framework...');
40
- // Initialize the Fusion Framework with the provided environment and authentication
41
- const framework = await initializeFramework({
42
- env: options.environment,
43
- auth: options.auth,
44
- });
45
- log?.succeed('Initialized Fusion Framework');
46
- // Create a client for the 'apps' service
47
- const appClient = await framework.serviceDiscovery.createClient('apps');
48
- // Subscribe to outgoing requests for logging and debugging
49
- appClient.request$.subscribe((request) => {
50
- log?.debug('Request:', request);
51
- log?.info('🌎', 'Executing request to:', formatPath(request.uri));
52
- });
53
- log?.start('Publishing application config');
54
- log?.info('Using environment:', chalk.redBright(options.environment));
55
- try {
56
- // Send a PUT request to publish the app config for the specific build version
57
- const response = await appClient.json(`/apps/${appManifest.appKey}/builds/${appVersion}/config`, {
58
- method: 'PUT',
59
- body: appConfig,
60
- });
61
- log?.debug('Response:', response);
62
- log?.succeed('Published application config');
63
- }
64
- catch (error) {
65
- // Handle known HTTP errors with specific log messages
66
- if (error instanceof HttpJsonResponseError) {
67
- switch (error.response.status) {
68
- case 410:
69
- log?.fail('🤬', `App ${appManifest.appKey} is deleted from apps-service. Please check the app key and try again.`);
70
- break;
71
- case 404:
72
- log?.fail('🤬', `App ${appManifest.appKey} not found. Please check the app key and try again.`);
73
- break;
74
- case 403:
75
- case 401:
76
- log?.fail('🤬', 'You are not authorized to publish application config. Please check your permissions.');
77
- break;
78
- default:
79
- log?.fail('🤬', 'Failed to publish application config.', `Status code: ${error.response.status}`, `Message: ${error.response.statusText}`);
80
- break;
81
- }
82
- }
83
- // Rethrow error for upstream handling
84
- throw error;
85
- }
86
- };
87
- // Export as default for compatibility with import patterns
88
- export default publishAppConfig;
89
- //# sourceMappingURL=app-config-publish.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config-publish.js","sourceRoot":"","sources":["../../../src/bin/app-config-publish.ts"],"names":[],"mappings":"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"}
@@ -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 { resolveAppConfig } from './helpers/resolve-app-config.js';
5
- /**
6
- * Generates the application configuration object for the current project.
7
- *
8
- * This function resolves the app package, sets up the runtime environment, resolves the app 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 generateApplicationConfig = async (options) => {
18
- const { log } = options ?? {};
19
- // Resolve the application'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 application config using the environment and config path
29
- const config = await resolveAppConfig(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=app-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../src/bin/app-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,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AA8BnE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,OAA0C,EAAE,EAAE;IAC5F,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9B,+DAA+D;IAC/D,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,uEAAuE;IACvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,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,102 +0,0 @@
1
- import { fileURLToPath } from 'node:url';
2
- import { fileExistsSync } from '../lib/utils/file-exists.js';
3
- import { resolveAppConfig } from './helpers/resolve-app-config.js';
4
- import { resolveProjectPackage } from './helpers/resolve-project-package.js';
5
- import { resolveAppManifest } from './helpers/resolve-app-manifest.js';
6
- import { createDevServer } from './utils/create-dev-server.js';
7
- import { readPackageUp } from 'read-package-up';
8
- import { dirname } from 'node:path';
9
- /**
10
- * Starts the application development server for local development.
11
- *
12
- * This function resolves the app package, manifest, and config, sets up the runtime environment,
13
- * and launches a development server using the resolved configuration. It also attempts to resolve
14
- * the portal entry point if available, and provides detailed logging for each step.
15
- *
16
- * @param options - Settings for environment, manifest path, config path, and logger.
17
- * @returns A promise that resolves when the dev server has started.
18
- * @public
19
- */
20
- export const startAppDevServer = async (options) => {
21
- const { log } = options ?? {};
22
- // The portalId is currently hardcoded, but could be made configurable in the future
23
- const portalId = '@equinor/fusion-framework-dev-portal';
24
- // Resolve the application's package.json for root and metadata
25
- const pkg = await resolveProjectPackage(log);
26
- // Setup the runtime environment for the dev server
27
- const env = {
28
- root: pkg.root,
29
- environment: 'local', // Always use 'local' for dev server
30
- ...options?.env, // Allow overrides from options
31
- mode: 'development', // Force development mode
32
- command: 'serve', // Command is always 'serve' for dev
33
- };
34
- // Resolve the application manifest using the environment and manifest path
35
- const appManifest = await resolveAppManifest(env, pkg, {
36
- log,
37
- manifestPath: options?.manifest,
38
- });
39
- // Resolve the application config using the environment and config path
40
- const appConfig = await resolveAppConfig(env, { log, config: options?.config });
41
- // Attempt to resolve the portal entry point if the portal is local
42
- let templateEntry;
43
- let templateFilePath;
44
- const portalFilePath = fileURLToPath(import.meta.resolve(portalId));
45
- if (fileExistsSync(portalFilePath)) {
46
- // If the portal file exists locally, set the entry point for the dev server
47
- templateEntry = portalFilePath;
48
- // Resolve the directory of the portal file for potential asset paths
49
- templateFilePath = await readPackageUp({ cwd: portalFilePath }).then((x) => x ? dirname(x?.path) : undefined);
50
- }
51
- else {
52
- // Otherwise, log that the portal is external and skip entry point resolution
53
- log?.info(`Portal ${portalId} is external, skipping entry point resolution`);
54
- }
55
- log?.start('Starting app development server...');
56
- // Create the dev server configuration, including portal and app settings
57
- const devServer = await createDevServer(env, {
58
- template: {
59
- portal: {
60
- id: portalId,
61
- },
62
- },
63
- // If a local portal entry point is found, add it to the config
64
- ...(templateEntry
65
- ? {
66
- portal: {
67
- manifest: {
68
- name: portalId,
69
- build: {
70
- templateEntry,
71
- assetPath: '/@fs',
72
- },
73
- },
74
- // @todo - replace with real portal config when available
75
- config: {},
76
- },
77
- }
78
- : {}),
79
- app: {
80
- manifest: appManifest,
81
- config: appConfig,
82
- },
83
- }, {
84
- server: {
85
- port: options?.port || 3000,
86
- host: 'localhost',
87
- fs: {
88
- allow: templateFilePath ? [pkg.root, templateFilePath] : [pkg.root],
89
- },
90
- },
91
- });
92
- await devServer.listen();
93
- log?.succeed('App development server started successfully');
94
- // print the server URL for user convenience with `apps/<appKey>`
95
- const protocol = devServer.config.server.https ? 'https' : 'http';
96
- const host = devServer.config.server.host || 'localhost';
97
- const port = devServer.config.server.port || 5173;
98
- log?.info(`App development server is running at: ${protocol}://${host}:${port}/apps/${appManifest.appKey}`);
99
- // Return the dev server instance for further use or testing
100
- return devServer;
101
- };
102
- //# sourceMappingURL=app-dev.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-dev.js","sourceRoot":"","sources":["../../../src/bin/app-dev.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { resolveAppManifest } from './helpers/resolve-app-manifest.js';
2
- import { resolveProjectPackage } from './helpers/resolve-project-package.js';
3
- /**
4
- * Loads and resolves the application manifest based on the provided options.
5
- *
6
- * This function resolves the app package, sets up the runtime environment, and loads the 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 application 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 loadAppManifest = 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 application manifest using the environment and manifest path
28
- const manifest = await resolveAppManifest(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 loadAppManifest;
38
- //# sourceMappingURL=app-manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-manifest.js","sourceRoot":"","sources":["../../../src/bin/app-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AA0B7E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAAkC,EAAE,EAAE;IAC1E,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,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;QAClD,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,eAAe,CAAC"}
@@ -1,51 +0,0 @@
1
- import { buildApplication } from './app-build';
2
- import { pack } from './pack';
3
- /**
4
- * Bundles the application into an archive for distribution or deployment.
5
- *
6
- * This function builds the application, validates the manifest, and creates an archive containing
7
- * the app manifest and metadata. Handles errors and logs progress for maintainability and debugging.
8
- *
9
- * @param options - Options for logger, manifest path, and archive name.
10
- * @returns An object containing the archive path and the application manifest.
11
- * @throws If the manifest build config is missing or packaging fails.
12
- * @public
13
- */
14
- export const bundleApp = async (options) => {
15
- const { log, manifest } = options;
16
- // Setup a default runtime environment for the build
17
- const env = {
18
- command: 'build',
19
- mode: process.env.NODE_ENV ?? 'production',
20
- environment: null,
21
- root: process.cwd(),
22
- };
23
- // Build the application and retrieve the manifest and package info
24
- const { pkg, manifest: appManifest } = await buildApplication({ log, manifest });
25
- // Ensure the manifest contains build configuration
26
- if (!appManifest.build) {
27
- throw new Error('Manifest build config not found');
28
- }
29
- // Create the archive with the app manifest and metadata
30
- const result = await pack(pkg, {
31
- log,
32
- archive: options?.archive,
33
- content: {
34
- 'app-manifest.json': JSON.stringify(appManifest.build, null, 2),
35
- 'metadata.json': JSON.stringify({
36
- name: appManifest.appKey,
37
- version: appManifest.build.version,
38
- }),
39
- },
40
- }).catch((error) => {
41
- // Log and exit if packaging fails
42
- log?.error('Failed to create package:', error);
43
- process.exit(1);
44
- });
45
- // Return the archive path and manifest for further use
46
- return {
47
- archive: result,
48
- manifest: appManifest,
49
- };
50
- };
51
- //# sourceMappingURL=app-pack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-pack.js","sourceRoot":"","sources":["../../../src/bin/app-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA2B9B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAAyB,EAAE,EAAE;IAC3D,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,mEAAmE;IACnE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjF,mDAAmD;IACnD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE;QAC7B,GAAG;QACH,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,OAAO,EAAE;YACP,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE,WAAW,CAAC,MAAM;gBACxB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO;aACnC,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,uDAAuD;IACvD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,89 +0,0 @@
1
- import { HttpJsonResponseError } from '@equinor/fusion-framework-module-http/errors';
2
- import { formatPath, chalk } from './utils';
3
- /**
4
- * Allowed tags for application versions in the app service.
5
- *
6
- * - `latest`: Marks the most recent stable version of the application.
7
- * - `preview`: Marks a pre-release or preview version for testing or review.
8
- *
9
- * Used by {@link tagApplication} 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 an application version in the app service with a specified tag (e.g., 'latest' or 'preview').
20
- *
21
- * This function validates input, creates a client for the app service, and sends a tag request.
22
- * It provides detailed logging and error handling for common failure scenarios.
23
- *
24
- * @param options - Tag, app key, version, framework instance, and logger.
25
- * @returns The result of the tag operation from the app service.
26
- * @throws If the tag, app key, or version is invalid, or if the tag operation fails.
27
- * @public
28
- */
29
- export const tagApplication = async (options) => {
30
- const { tag, appKey, 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 app key
37
- if (!appKey) {
38
- log?.fail('🤪', 'Application key 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
- // Create a client for the 'apps' service
47
- const appClient = await framework.serviceDiscovery.createClient('apps');
48
- // Subscribe to outgoing requests for logging and debugging
49
- appClient.request$.subscribe((request) => {
50
- log?.debug('Request:', request);
51
- log?.info('🌎', 'Executing request to:', formatPath(request.uri));
52
- });
53
- log?.start('Publishing application config');
54
- try {
55
- // Send a PUT request to tag the application version
56
- const result = await appClient.json(`/apps/${appKey}/tags/${tag}`, {
57
- method: 'PUT',
58
- body: { version },
59
- });
60
- log?.debug('Response:', result);
61
- log?.succeed('Tagged application successfully', chalk.greenBright(`${appKey}@${version} - ${tag}`));
62
- return result;
63
- }
64
- catch (error) {
65
- // Handle known HTTP errors with specific log messages
66
- if (error instanceof HttpJsonResponseError) {
67
- switch (error.response.status) {
68
- case 410:
69
- log?.fail('🤬', `App ${appKey} is deleted from apps-service. Please check the app key and try again.`);
70
- break;
71
- case 404:
72
- log?.fail('🤬', `App ${appKey} not found. Please check the app key and try again.`);
73
- break;
74
- case 403:
75
- case 401:
76
- log?.fail('🤬', 'You are not authorized to tag application. Please check your permissions.');
77
- break;
78
- default:
79
- log?.fail('🤬', 'Failed to tag application', `Status code: ${error.response.status}`, `Error: ${error.message}`);
80
- break;
81
- }
82
- }
83
- // Rethrow error for upstream handling
84
- throw error;
85
- }
86
- };
87
- // Export as default for compatibility with import patterns
88
- export default tagApplication;
89
- //# sourceMappingURL=app-tag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-tag.js","sourceRoot":"","sources":["../../../src/bin/app-tag.ts"],"names":[],"mappings":"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"}