@equinor/fusion-framework-cli 10.0.0-beta-cli-2ce11df2efed9cbee27355186d6da472253326a7 → 10.0.0-next-9f6eec8c5a4cb3dd430fc6bee227442a3dc28bb8

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 (175) hide show
  1. package/CHANGELOG.md +387 -6
  2. package/README.md +31 -9
  3. package/dist/bin/build-application.js +22 -1
  4. package/dist/bin/build-application.js.map +1 -1
  5. package/dist/bin/bundle-application.js +8 -11
  6. package/dist/bin/bundle-application.js.map +1 -1
  7. package/dist/bin/create-dev-serve.js +89 -117
  8. package/dist/bin/create-dev-serve.js.map +1 -1
  9. package/dist/bin/create-export-config.js +54 -12
  10. package/dist/bin/create-export-config.js.map +1 -1
  11. package/dist/bin/create-export-manifest.js +44 -36
  12. package/dist/bin/create-export-manifest.js.map +1 -1
  13. package/dist/bin/dev-portal/AppLoader.js +23 -0
  14. package/dist/bin/dev-portal/AppLoader.js.map +1 -1
  15. package/dist/bin/dev-portal/ContextSelector/ContextSelector.js +17 -2
  16. package/dist/bin/dev-portal/ContextSelector/ContextSelector.js.map +1 -1
  17. package/dist/bin/dev-portal/ContextSelector/useContextResolver.js +35 -1
  18. package/dist/bin/dev-portal/ContextSelector/useContextResolver.js.map +1 -1
  19. package/dist/bin/dev-portal/Header.js +1 -0
  20. package/dist/bin/dev-portal/Header.js.map +1 -1
  21. package/dist/bin/dev-portal/PersonSideSheet/index.js +4 -0
  22. package/dist/bin/dev-portal/PersonSideSheet/index.js.map +1 -1
  23. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.js +4 -0
  24. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.js.map +1 -1
  25. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.js +3 -0
  26. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.js.map +1 -1
  27. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.js +3 -0
  28. package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.js.map +1 -1
  29. package/dist/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.js +3 -0
  30. package/dist/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.js.map +1 -1
  31. package/dist/bin/dev-portal/Router.js +3 -0
  32. package/dist/bin/dev-portal/Router.js.map +1 -1
  33. package/dist/bin/dev-portal/config.js +7 -2
  34. package/dist/bin/dev-portal/config.js.map +1 -1
  35. package/dist/bin/dev-portal/useAppContextNavigation.js +27 -6
  36. package/dist/bin/dev-portal/useAppContextNavigation.js.map +1 -1
  37. package/dist/bin/main.app.js +32 -19
  38. package/dist/bin/main.app.js.map +1 -1
  39. package/dist/bin/main.js +3 -0
  40. package/dist/bin/main.js.map +1 -1
  41. package/dist/bin/public/assets/index-CwGBhRCD.js +5235 -0
  42. package/dist/bin/public/index.html +1 -1
  43. package/dist/bin/publish-application.js +75 -20
  44. package/dist/bin/publish-application.js.map +1 -1
  45. package/dist/bin/tag-application.js +52 -16
  46. package/dist/bin/tag-application.js.map +1 -1
  47. package/dist/bin/upload-application.js +47 -14
  48. package/dist/bin/upload-application.js.map +1 -1
  49. package/dist/bin/utils/{execute-commant.js → execute-command.js} +5 -2
  50. package/dist/bin/utils/execute-command.js.map +1 -0
  51. package/dist/bin/utils/format.js +1 -1
  52. package/dist/bin/utils/format.js.map +1 -1
  53. package/dist/bin/utils/getEndpointUrl.js +49 -0
  54. package/dist/bin/utils/getEndpointUrl.js.map +1 -0
  55. package/dist/bin/utils/index.js +14 -0
  56. package/dist/bin/utils/index.js.map +1 -0
  57. package/dist/bin/utils/isAppRegistered.js +32 -0
  58. package/dist/bin/utils/isAppRegistered.js.map +1 -0
  59. package/dist/bin/utils/load-app-config.js +1 -0
  60. package/dist/bin/utils/load-app-config.js.map +1 -1
  61. package/dist/bin/utils/load-manifest.js +9 -4
  62. package/dist/bin/utils/load-manifest.js.map +1 -1
  63. package/dist/bin/utils/proxy-request-logger.js +34 -0
  64. package/dist/bin/utils/proxy-request-logger.js.map +1 -0
  65. package/dist/bin/utils/publishAppConfig.js +36 -0
  66. package/dist/bin/utils/publishAppConfig.js.map +1 -0
  67. package/dist/bin/utils/requireToken.js +10 -0
  68. package/dist/bin/utils/requireToken.js.map +1 -0
  69. package/dist/bin/utils/spinner.js +10 -0
  70. package/dist/bin/utils/spinner.js.map +1 -1
  71. package/dist/bin/utils/tagAppBundle.js +35 -0
  72. package/dist/bin/utils/tagAppBundle.js.map +1 -0
  73. package/dist/bin/utils/uploadAppBundle.js +54 -0
  74. package/dist/bin/utils/uploadAppBundle.js.map +1 -0
  75. package/dist/lib/app-config.js +3 -1
  76. package/dist/lib/app-config.js.map +1 -1
  77. package/dist/lib/app-manifest.js +97 -15
  78. package/dist/lib/app-manifest.js.map +1 -1
  79. package/dist/lib/app-package.js +52 -5
  80. package/dist/lib/app-package.js.map +1 -1
  81. package/dist/lib/plugins/app-assets/app-asset-plugin.js +102 -0
  82. package/dist/lib/plugins/app-assets/app-asset-plugin.js.map +1 -0
  83. package/dist/lib/plugins/app-assets/emit-asset.js +41 -0
  84. package/dist/lib/plugins/app-assets/emit-asset.js.map +1 -0
  85. package/dist/lib/plugins/app-assets/extension-filter-pattern.js +20 -0
  86. package/dist/lib/plugins/app-assets/extension-filter-pattern.js.map +1 -0
  87. package/dist/lib/plugins/app-assets/index.js +4 -0
  88. package/dist/lib/plugins/app-assets/index.js.map +1 -0
  89. package/dist/lib/plugins/app-assets/read-asset-content.js +34 -0
  90. package/dist/lib/plugins/app-assets/read-asset-content.js.map +1 -0
  91. package/dist/lib/plugins/app-assets/resolve-asset-id.js +63 -0
  92. package/dist/lib/plugins/app-assets/resolve-asset-id.js.map +1 -0
  93. package/dist/lib/plugins/app-assets/static.js +15 -0
  94. package/dist/lib/plugins/app-assets/static.js.map +1 -0
  95. package/dist/lib/plugins/app-proxy/app-proxy-plugin.js +127 -0
  96. package/dist/lib/plugins/app-proxy/app-proxy-plugin.js.map +1 -0
  97. package/dist/lib/plugins/app-proxy/index.js +2 -0
  98. package/dist/lib/plugins/app-proxy/index.js.map +1 -0
  99. package/dist/lib/plugins/external-public/external-public-plugin.js +103 -0
  100. package/dist/lib/plugins/external-public/external-public-plugin.js.map +1 -0
  101. package/dist/lib/plugins/external-public/index.js +2 -0
  102. package/dist/lib/plugins/external-public/index.js.map +1 -0
  103. package/dist/lib/utils/assert.js +2 -1
  104. package/dist/lib/utils/assert.js.map +1 -1
  105. package/dist/lib/utils/config.js +5 -0
  106. package/dist/lib/utils/config.js.map +1 -1
  107. package/dist/lib/vite-config.js +4 -4
  108. package/dist/lib/vite-config.js.map +1 -1
  109. package/dist/lib/vite-logger.js +2 -0
  110. package/dist/lib/vite-logger.js.map +1 -1
  111. package/dist/types/bin/build-application.d.ts +4 -3
  112. package/dist/types/bin/create-dev-serve.d.ts +1 -1
  113. package/dist/types/bin/create-export-config.d.ts +3 -3
  114. package/dist/types/bin/create-export-manifest.d.ts +6 -9
  115. package/dist/types/bin/dev-portal/AppLoader.d.ts +7 -0
  116. package/dist/types/bin/dev-portal/ContextSelector/ContextSelector.d.ts +5 -0
  117. package/dist/types/bin/dev-portal/ContextSelector/useContextResolver.d.ts +6 -0
  118. package/dist/types/bin/dev-portal/FusionLogo.d.ts +0 -1
  119. package/dist/types/bin/dev-portal/PersonSideSheet/index.d.ts +4 -0
  120. package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.d.ts +4 -0
  121. package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.d.ts +3 -0
  122. package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.d.ts +3 -0
  123. package/dist/types/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.d.ts +3 -0
  124. package/dist/types/bin/dev-portal/PersonSideSheet/sheets/Styled.d.ts +4 -5
  125. package/dist/types/bin/dev-portal/useAppContextNavigation.d.ts +4 -0
  126. package/dist/types/bin/publish-application.d.ts +1 -1
  127. package/dist/types/bin/tag-application.d.ts +1 -1
  128. package/dist/types/bin/upload-application.d.ts +1 -1
  129. package/dist/types/bin/utils/execute-command.d.ts +8 -0
  130. package/dist/types/bin/utils/format.d.ts +0 -2
  131. package/dist/types/bin/utils/getEndpointUrl.d.ts +10 -0
  132. package/dist/types/bin/utils/index.d.ts +14 -0
  133. package/dist/types/bin/utils/isAppRegistered.d.ts +7 -0
  134. package/dist/types/bin/utils/load-app-config.d.ts +1 -1
  135. package/dist/types/bin/utils/load-manifest.d.ts +3 -2
  136. package/dist/types/bin/utils/proxy-request-logger.d.ts +15 -0
  137. package/dist/types/bin/utils/publishAppConfig.d.ts +9 -0
  138. package/dist/types/bin/utils/requireToken.d.ts +4 -0
  139. package/dist/types/bin/utils/spinner.d.ts +1 -0
  140. package/dist/types/bin/utils/tagAppBundle.d.ts +7 -0
  141. package/dist/types/bin/utils/uploadAppBundle.d.ts +7 -0
  142. package/dist/types/lib/app-config.d.ts +1 -1
  143. package/dist/types/lib/app-manifest.d.ts +30 -2
  144. package/dist/types/lib/app-package.d.ts +34 -3
  145. package/dist/types/lib/plugins/app-assets/app-asset-plugin.d.ts +36 -0
  146. package/dist/types/lib/plugins/app-assets/emit-asset.d.ts +18 -0
  147. package/dist/types/lib/plugins/app-assets/extension-filter-pattern.d.ts +14 -0
  148. package/dist/types/lib/plugins/app-assets/index.d.ts +3 -0
  149. package/dist/types/lib/plugins/app-assets/read-asset-content.d.ts +14 -0
  150. package/dist/types/lib/plugins/app-assets/resolve-asset-id.d.ts +16 -0
  151. package/dist/types/lib/plugins/app-assets/static.d.ts +5 -0
  152. package/dist/types/lib/plugins/app-proxy/app-proxy-plugin.d.ts +70 -0
  153. package/dist/types/lib/plugins/app-proxy/index.d.ts +1 -0
  154. package/dist/types/lib/plugins/external-public/external-public-plugin.d.ts +30 -0
  155. package/dist/types/lib/plugins/external-public/index.d.ts +1 -0
  156. package/dist/types/lib/utils/assert.d.ts +2 -2
  157. package/dist/types/lib/utils/config.d.ts +7 -1
  158. package/dist/types/lib/utils/expect.d.ts +1 -1
  159. package/dist/types/lib/vite-config.d.ts +1 -1
  160. package/dist/types/version.d.ts +1 -1
  161. package/dist/version.js +2 -1
  162. package/dist/version.js.map +1 -1
  163. package/package.json +49 -35
  164. package/dist/bin/dev-proxy.js +0 -89
  165. package/dist/bin/dev-proxy.js.map +0 -1
  166. package/dist/bin/public/assets/index-Cd994U8q.js +0 -3504
  167. package/dist/bin/utils/app-api.js +0 -169
  168. package/dist/bin/utils/app-api.js.map +0 -1
  169. package/dist/bin/utils/execute-commant.js.map +0 -1
  170. package/dist/index.js +0 -12
  171. package/dist/index.js.map +0 -1
  172. package/dist/types/bin/dev-proxy.d.ts +0 -26
  173. package/dist/types/bin/utils/app-api.d.ts +0 -8
  174. package/dist/types/bin/utils/execute-commant.d.ts +0 -8
  175. package/dist/types/index.d.ts +0 -4
@@ -28,7 +28,7 @@
28
28
  }
29
29
  </style>
30
30
 
31
- <script type="module" crossorigin src="/assets/index-Cd994U8q.js"></script>
31
+ <script type="module" crossorigin src="/assets/index-CwGBhRCD.js"></script>
32
32
 
33
33
  <body>
34
34
  <div id="root"></div>
@@ -11,37 +11,92 @@ import { chalk } from './utils/format.js';
11
11
  import { Spinner } from './utils/spinner.js';
12
12
  import { bundleApplication } from './bundle-application.js';
13
13
  import { resolveAppPackage, resolveAppKey } from '../lib/app-package.js';
14
- import { uploadAppBundle, appRegistered, validateToken, tagAppBundle, } from './utils/app-api.js';
14
+ import { isAppRegistered, getEndpointUrl, requireToken, tagAppBundle, uploadAppBundle, } from './utils/index.js';
15
+ import { exit } from 'node:process';
15
16
  export const publishApplication = (options) => __awaiter(void 0, void 0, void 0, function* () {
16
17
  const { tag, env, service } = options;
17
18
  const spinner = Spinner.Global({ prefixText: chalk.dim('Publish') });
18
- const validToken = validateToken();
19
- if (!validToken) {
20
- return;
19
+ try {
20
+ spinner.info('Validating FUSION_TOKEN');
21
+ // make sure token exist
22
+ requireToken();
23
+ // call service discovery with token, will throw error if failed
24
+ yield getEndpointUrl('apps', env, '');
25
+ spinner.succeed('Found valid FUSION_TOKEN');
26
+ }
27
+ catch (e) {
28
+ const err = e;
29
+ spinner.fail(chalk.bgRed(err.message));
30
+ exit(1);
21
31
  }
22
32
  const pkg = yield resolveAppPackage();
23
33
  const appKey = resolveAppKey(pkg.packageJson);
24
- spinner.info(`Publishing app: "${appKey}" with tag: "${tag}"`);
25
- spinner.info('Verifying that App is registered in api.');
26
- const appResponse = yield appRegistered(appKey, env, service);
27
- if (!appResponse) {
28
- return;
34
+ try {
35
+ spinner.info('Verifying that App is registered');
36
+ const state = { endpoint: '' };
37
+ try {
38
+ state.endpoint = yield getEndpointUrl(`apps/${appKey}`, env, service);
39
+ }
40
+ catch (e) {
41
+ const err = e;
42
+ throw new Error(`Could not get endpoint from service discovery while verifying app is registered. service-discovery status: ${err.message}`);
43
+ }
44
+ yield isAppRegistered(state.endpoint, appKey);
45
+ spinner.succeed(`${appKey} is registered`);
46
+ }
47
+ catch (e) {
48
+ const err = e;
49
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
50
+ exit(1);
29
51
  }
30
- spinner.info('Create bundle');
52
+ const bundle = 'app-bundle.zip';
53
+ /* Zip app bundle */
54
+ spinner.info('Creating zip bundle');
31
55
  yield bundleApplication({
32
- archive: 'app-bundle.zip',
56
+ archive: bundle,
33
57
  outDir: 'dist',
34
58
  });
35
- spinner.info('Uploading bundle');
36
- const uploadedBundle = yield uploadAppBundle(appKey, 'app-bundle.zip', env, service);
37
- if (!uploadedBundle) {
38
- return;
59
+ const state = {
60
+ uploadedBundle: { version: '' },
61
+ endpoint: '',
62
+ };
63
+ spinner.info(`Publishing app: "${appKey}" with tag: "${tag}"`);
64
+ /* Upload app bundle */
65
+ try {
66
+ spinner.info(`Uploading bundle ${chalk.yellowBright(bundle)} to appKey ${chalk.yellowBright(appKey)}`);
67
+ try {
68
+ state.endpoint = yield getEndpointUrl(`bundles/apps/${appKey}`, env, service);
69
+ }
70
+ catch (e) {
71
+ const err = e;
72
+ throw new Error(`Could not get endpoint from service discovery while uploading app bundle. service-discovery status: ${err.message}`);
73
+ }
74
+ spinner.info(`Posting bundle to => ${state.endpoint}`);
75
+ state.uploadedBundle = yield uploadAppBundle(state.endpoint, bundle);
76
+ spinner.succeed('✅', `Uploaded bundle: "${chalk.greenBright(bundle)}" with version: ${chalk.greenBright(state.uploadedBundle.version)}"`);
77
+ }
78
+ catch (e) {
79
+ const err = e;
80
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
81
+ exit(1);
82
+ }
83
+ try {
84
+ spinner.info(`Tagging ${state.uploadedBundle.version} with ${tag}`);
85
+ try {
86
+ state.endpoint = yield getEndpointUrl(`apps/${appKey}/tags/${tag}`, env, service);
87
+ }
88
+ catch (e) {
89
+ const err = e;
90
+ throw new Error(`Could not get endpoint from service discovery while tagging app. service-discovery status: ${err.message}`);
91
+ }
92
+ const tagged = yield tagAppBundle(state.endpoint, state.uploadedBundle.version);
93
+ spinner.succeed('✅', `Tagged version ${chalk.greenBright(tagged.version)} with ${chalk.greenBright(tagged.tagName)}`);
39
94
  }
40
- spinner.info(`Tag app bundle with: ${tag}`);
41
- const tagd = yield tagAppBundle(tag, appKey, uploadedBundle.version, env, service);
42
- if (!tagd) {
43
- return;
95
+ catch (e) {
96
+ const err = e;
97
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
98
+ exit(1);
44
99
  }
45
- spinner.succeed('', `Published app: "${chalk.greenBright(appKey)}"`, `With version: "${chalk.greenBright(tagd.version)}"`, `Tag: "${chalk.greenBright(tagd.tagName)}"`);
100
+ spinner.succeed('⭐️', `Published app: "${chalk.greenBright(appKey)}" version: "${chalk.greenBright(state.uploadedBundle.version)}" with tagg: "${chalk.greenBright(tag)}"`);
46
101
  });
47
102
  //# sourceMappingURL=publish-application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish-application.js","sourceRoot":"","sources":["../../src/bin/publish-application.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EACH,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,GAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAO,OAIxC,EAAE,EAAE;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAErE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,CAAC,IAAI,CAAC,oBAAoB,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC;IAE/D,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO;IACX,CAAC;IAGD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,MAAM,iBAAiB,CAAC;QACpB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACrF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO;IACX,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAEnF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,OAAO,CAAC,OAAO,CACX,GAAG,EACH,mBAAmB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAC/C,kBAAkB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EACpD,SAAS,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAC9C,CAAC;AACN,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"publish-application.js","sourceRoot":"","sources":["../../src/bin/publish-application.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ import { exit } from 'node:process';
10
11
  import { chalk } from './utils/format.js';
11
12
  import { Spinner } from './utils/spinner.js';
12
13
  import { resolveAppPackage, resolveAppKey } from '../lib/app-package.js';
13
- import { appRegistered, validateToken, tagAppBundle } from './utils/app-api.js';
14
+ import { isAppRegistered, getEndpointUrl, requireToken, tagAppBundle } from './utils/index.js';
14
15
  var Tags;
15
16
  (function (Tags) {
16
17
  Tags["preview"] = "preview";
@@ -19,26 +20,61 @@ var Tags;
19
20
  export const tagApplication = (options) => __awaiter(void 0, void 0, void 0, function* () {
20
21
  const { tag, version, env, service } = options;
21
22
  const spinner = Spinner.Global({ prefixText: chalk.dim('Tag') });
22
- const validToken = validateToken();
23
- if (!validToken) {
24
- return;
23
+ if (!Object.values(Tags).includes(tag)) {
24
+ spinner.fail('😞', `Tag must match (${Tags.latest} | ${Tags.preview})`);
25
+ exit(1);
26
+ }
27
+ /** make sure user has a valid token */
28
+ try {
29
+ spinner.info('Validating FUSION_TOKEN');
30
+ // make sure token exist
31
+ requireToken();
32
+ // call service discovery with token, will throw error if failed
33
+ yield getEndpointUrl('apps', env, '');
34
+ spinner.succeed('Found valid FUSION_TOKEN');
35
+ }
36
+ catch (e) {
37
+ const err = e;
38
+ spinner.fail(chalk.bgRed(err.message));
39
+ exit(1);
25
40
  }
26
41
  const pkg = yield resolveAppPackage();
27
42
  const appKey = resolveAppKey(pkg.packageJson);
28
- if (!Object.values(Tags).includes(tag)) {
29
- spinner.fail('😞', `Tag must match (${Tags.latest} | ${Tags.preview})`);
30
- return;
43
+ try {
44
+ spinner.info('Verifying that App is registered');
45
+ const state = { endpoint: '' };
46
+ try {
47
+ state.endpoint = yield getEndpointUrl(`apps/${appKey}`, env, service);
48
+ }
49
+ catch (e) {
50
+ const err = e;
51
+ throw new Error(`Could not get endpoint from service discovery while verifying app is registered. service-discovery status: ${err.message}`);
52
+ }
53
+ yield isAppRegistered(state.endpoint, appKey);
54
+ spinner.succeed(`${appKey} is registered`);
55
+ }
56
+ catch (e) {
57
+ const err = e;
58
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
59
+ exit(1);
31
60
  }
32
- spinner.info(`Tag app "${appKey}@${version}" with: "${tag}"`);
33
- spinner.info('Verifying that App is registered');
34
- const registered = yield appRegistered(appKey, env, service);
35
- if (!registered) {
36
- return;
61
+ try {
62
+ spinner.info(`Tagging "${appKey}@${version}" with: "${tag}"`);
63
+ const state = { endpoint: '' };
64
+ try {
65
+ state.endpoint = yield getEndpointUrl(`apps/${appKey}/tags/${tag}`, env, service);
66
+ }
67
+ catch (e) {
68
+ const err = e;
69
+ throw new Error(`Could not get endpoint from service discovery while tagging app. service-discovery status: ${err.message}`);
70
+ }
71
+ const tagged = yield tagAppBundle(state.endpoint, version);
72
+ spinner.succeed('✅', `Tagged app: "${chalk.greenBright(appKey)}"`, `version: "${chalk.greenBright(tagged.version)}"`, `with tag: "${chalk.greenBright(tagged.tagName)}"`);
37
73
  }
38
- const tagd = yield tagAppBundle(tag, appKey, version, env, service);
39
- if (!tagd) {
40
- return;
74
+ catch (e) {
75
+ const err = e;
76
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
77
+ exit(1);
41
78
  }
42
- spinner.succeed('✅', `App: "${chalk.greenBright(appKey)}"`, `Version: "${chalk.greenBright(tagd.version)}"`, `Tag: "${chalk.greenBright(tagd.tagName)}"`);
43
79
  });
44
80
  //# sourceMappingURL=tag-application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag-application.js","sourceRoot":"","sources":["../../src/bin/tag-application.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAEhG,IAAK,IAGJ;AAHD,WAAK,IAAI;IACL,2BAAmB,CAAA;IACnB,yBAAiB,CAAA;AACrB,CAAC,EAHI,IAAI,KAAJ,IAAI,QAGR;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAO,OAKpC,EAAE,EAAE;IACD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAG9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAW,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACxE,OAAO;IACX,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,YAAY,MAAM,IAAI,OAAO,YAAY,GAAG,GAAG,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,OAAO,CAAC,OAAO,CACX,GAAG,EACH,SAAS,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EACrC,aAAa,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAC/C,SAAS,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAC9C,CAAC;AACN,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"tag-application.js","sourceRoot":"","sources":["../../src/bin/tag-application.ts"],"names":[],"mappings":"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"}
@@ -7,30 +7,63 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ import { exit } from 'node:process';
10
11
  import { Spinner } from './utils/spinner.js';
11
12
  import { chalk } from './utils/format.js';
12
13
  import { resolveAppPackage, resolveAppKey } from '../lib/app-package.js';
13
- import { uploadAppBundle, appRegistered, validateToken } from './utils/app-api.js';
14
+ import { isAppRegistered, getEndpointUrl, requireToken, uploadAppBundle } from './utils/index.js';
14
15
  export const uploadApplication = (options) => __awaiter(void 0, void 0, void 0, function* () {
15
16
  const { bundle, env, service } = options;
16
17
  const spinner = Spinner.Global({ prefixText: chalk.dim('Upload') });
17
- const validToken = validateToken();
18
- if (!validToken) {
19
- return;
18
+ try {
19
+ spinner.info('Validating FUSION_TOKEN');
20
+ // make sure token exist
21
+ requireToken();
22
+ // call service discovery with token, will throw error if failed
23
+ yield getEndpointUrl('apps', env, '');
24
+ spinner.succeed('Found valid FUSION_TOKEN');
20
25
  }
26
+ catch (e) {
27
+ const err = e;
28
+ spinner.fail(chalk.bgRed(err.message));
29
+ exit(1);
30
+ }
31
+ /* get package.json */
21
32
  const pkg = yield resolveAppPackage();
22
33
  const appKey = resolveAppKey(pkg.packageJson);
23
- spinner.info('Verifying App is registered');
24
- const appResponse = yield appRegistered(appKey, env, service);
25
- if (!appResponse) {
26
- return;
34
+ try {
35
+ spinner.info('Verifying that App is registered');
36
+ const state = { endpoint: '' };
37
+ try {
38
+ state.endpoint = yield getEndpointUrl(`apps/${appKey}`, env, service);
39
+ }
40
+ catch (e) {
41
+ const err = e;
42
+ throw new Error(`Could not get endpoint from service discovery while verifying app. service-discovery status: ${err.message}`);
43
+ }
44
+ yield isAppRegistered(state.endpoint, appKey);
45
+ spinner.succeed(`${appKey} is registered`);
46
+ }
47
+ catch (e) {
48
+ const err = e;
49
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
50
+ exit(1);
51
+ }
52
+ /* Upload app bundle */
53
+ try {
54
+ spinner.info(`Uploading bundle ${chalk.yellowBright(bundle)} to appKey ${chalk.yellowBright(appKey)}`);
55
+ const endpoint = yield getEndpointUrl(`bundles/apps/${appKey}`, env, service);
56
+ if (!endpoint) {
57
+ throw new Error('Could not get endpoint from service discovery');
58
+ }
59
+ spinner.info(`Posting bundle to => ${endpoint}`);
60
+ const uploadedBundle = yield uploadAppBundle(endpoint, bundle);
61
+ spinner.succeed('✅', `Uploaded app: "${chalk.greenBright(appKey)}"`, `Version: "${chalk.greenBright(uploadedBundle.version)}"`);
27
62
  }
28
- spinner.info(`Uploading appkey: ${chalk.yellowBright(appKey)}`);
29
- spinner.info(`Uploading bundle ${chalk.yellowBright(bundle)}`);
30
- const uploadedBundle = yield uploadAppBundle(appKey, bundle, env, service);
31
- if (!uploadedBundle) {
32
- return;
63
+ catch (e) {
64
+ const err = e;
65
+ spinner.fail('🙅‍♂️', chalk.bgRed(err.message));
66
+ exit(1);
33
67
  }
34
- spinner.succeed('✅', `Uploaded app: "${chalk.greenBright(appKey)}"`, `Version: "${chalk.greenBright(uploadedBundle.version)}"`);
35
68
  });
36
69
  //# sourceMappingURL=upload-application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-application.js","sourceRoot":"","sources":["../../src/bin/upload-application.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAEnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAO,OAIvC,EAAE,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAGD,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO;IACX,CAAC;IAGD,OAAO,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO;IACX,CAAC;IAED,OAAO,CAAC,OAAO,CACX,GAAG,EACH,kBAAkB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAC9C,aAAa,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAC5D,CAAC;AACN,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"upload-application.js","sourceRoot":"","sources":["../../src/bin/upload-application.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGlG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAO,OAIvC,EAAE,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAExC,wBAAwB;QACxB,YAAY,EAAE,CAAC;QAEf,gEAAgE;QAChE,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAEtC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,CAAU,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,sBAAsB;IACtB,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE9C,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAE/B,IAAI,CAAC;YACD,KAAK,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,CAAU,CAAC;YACvB,MAAM,IAAI,KAAK,CACX,gGAAgG,GAAG,CAAC,OAAO,EAAE,CAChH,CAAC;QACN,CAAC;QAED,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,CAAU,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CACR,oBAAoB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAC3F,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,gBAAgB,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QAEjD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/D,OAAO,CAAC,OAAO,CACX,GAAG,EACH,kBAAkB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAC9C,aAAa,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAC5D,CAAC;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,CAAU,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;AACL,CAAC,CAAA,CAAC"}
@@ -9,7 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { fork } from 'node:child_process';
11
11
  import { assert } from 'node:console';
12
- export const executeCommand = (program, command, ...options) => __awaiter(void 0, void 0, void 0, function* () {
12
+ export const executeCommand = (program, command,
13
+ // TODO map command args
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ ...options) => __awaiter(void 0, void 0, void 0, function* () {
13
16
  assert(process.env.CLI_BIN, 'expected bin path in env');
14
17
  return new Promise((resolve, reject) => {
15
18
  const job = fork(String(process.env.CLI_BIN), [program, command, ...(options !== null && options !== void 0 ? options : [])], {});
@@ -17,4 +20,4 @@ export const executeCommand = (program, command, ...options) => __awaiter(void 0
17
20
  job.addListener('error', reject);
18
21
  });
19
22
  });
20
- //# sourceMappingURL=execute-commant.js.map
23
+ //# sourceMappingURL=execute-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-command.js","sourceRoot":"","sources":["../../../src/bin/utils/execute-command.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,OAAiB,EACjB,OAAiC;AACjC,wBAAwB;AACxB,8DAA8D;AAC9D,GAAG,OAAc,EACnB,EAAE;IACA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAA,CAAC"}
@@ -5,7 +5,7 @@ import prettyBytes from 'pretty-bytes';
5
5
  export { chalk };
6
6
  export const formatPath = (path, opt) => {
7
7
  var _a;
8
- return chalk.blueBright((opt === null || opt === void 0 ? void 0 : opt.relative) ? relative((_a = opt === null || opt === void 0 ? void 0 : opt.cwd) !== null && _a !== void 0 ? _a : process.cwd(), path) : path);
8
+ return chalk.blueBright((opt === null || opt === void 0 ? void 0 : opt.relative) ? './' + relative((_a = opt === null || opt === void 0 ? void 0 : opt.cwd) !== null && _a !== void 0 ? _a : process.cwd(), path) : path);
9
9
  };
10
10
  export const formatByteSize = (input) => {
11
11
  if (typeof input === 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/bin/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,GAA0C,EAAE,EAAE;;IACnF,OAAO,KAAK,CAAC,UAAU,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,QAAQ,CAAC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/bin/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,GAA0C,EAAE,EAAE;;IACnF,OAAO,KAAK,CAAC,UAAU,CACnB,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1E,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,49 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import fetch from 'node-fetch';
11
+ /**
12
+ * Retreive full endpoint URI to env in service-discovery
13
+ * @param endpoint <string> The endpoint to call in+ uri
14
+ * @param fusionEnv <FusionEnv> The Fusion env to get uri for
15
+ * @param service <string> Custom service uri to use insted of Fusion
16
+ * @param version <string> The version of the api to use
17
+ * @returns <string> The uri with endpoint
18
+ */
19
+ export const getEndpointUrl = (endpoint_1, fusionEnv_1, service_1, ...args_1) => __awaiter(void 0, [endpoint_1, fusionEnv_1, service_1, ...args_1], void 0, function* (endpoint, fusionEnv, service, version = '1.0') {
20
+ const { CUSTOM_APPAPI, FUSION_CLI_ENV, FUSION_TOKEN } = process.env;
21
+ /* use consumer provided api url */
22
+ if (service || CUSTOM_APPAPI) {
23
+ return service !== null && service !== void 0 ? service : CUSTOM_APPAPI;
24
+ }
25
+ /* Env has changed get new api url */
26
+ if (FUSION_CLI_ENV !== fusionEnv || !process.env.FUSION_CLI_APPAPI) {
27
+ process.env.FUSION_CLI_ENV = fusionEnv;
28
+ const requestService = yield fetch(`https://discovery.fusion.equinor.com/service-registry/environments/${fusionEnv}/services/apps`, {
29
+ headers: {
30
+ Authorization: `Bearer ${FUSION_TOKEN}`,
31
+ },
32
+ });
33
+ if (requestService.status === 401) {
34
+ throw new Error(`The provided FUSION_TOKEN is not valid. Refresh your token and try again.`);
35
+ }
36
+ if (!requestService.ok) {
37
+ const response = yield requestService.json();
38
+ console.log(response);
39
+ throw new Error(`Failed getEndpointUrl from service-discovery. HTTP status: ${requestService.status} - ${requestService.statusText}`);
40
+ }
41
+ const responseService = (yield requestService.json());
42
+ process.env.FUSION_CLI_APPAPI = responseService.uri;
43
+ }
44
+ const uri = new URL(`${process.env.FUSION_CLI_APPAPI}/${endpoint}`);
45
+ uri.searchParams.set('api-version', version);
46
+ /* return fresh/cached endpoint url */
47
+ return uri.href;
48
+ });
49
+ //# sourceMappingURL=getEndpointUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEndpointUrl.js","sourceRoot":"","sources":["../../../src/bin/utils/getEndpointUrl.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,gDAKX,EAAE,uFAJjB,QAAgB,EAChB,SAAoB,EACpB,OAAe,EACf,UAAkB,KAAK;IAEvB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAEpE,mCAAmC;IACnC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;QAC3B,OAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,aAAa,CAAC;IACpC,CAAC;IAED,qCAAqC;IACrC,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;QAEvC,MAAM,cAAc,GAAG,MAAM,KAAK,CAC9B,sEAAsE,SAAS,gBAAgB,EAC/F;YACI,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,YAAY,EAAE;aAC1C;SACJ,CACJ,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACX,2EAA2E,CAC9E,CAAC;QACN,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,MAAM,IAAI,KAAK,CACX,8DAA8D,cAAc,CAAC,MAAM,MAAM,cAAc,CAAC,UAAU,EAAE,CACvH,CAAC;QACN,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAoB,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAE7C,sCAAsC;IACtC,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB,CAAC,CAAA,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { getEndpointUrl } from './getEndpointUrl.js';
2
+ export { requireToken } from './requireToken.js';
3
+ export { isAppRegistered } from './isAppRegistered.js';
4
+ export { loadAppConfig } from './load-app-config.js';
5
+ export { loadAppManifest } from './load-manifest.js';
6
+ export { loadPackage } from './load-package.js';
7
+ export { loadViteConfig } from './load-vite-config.js';
8
+ export { formatPath, formatByteSize } from './format.js';
9
+ export { executeCommand } from './execute-command.js';
10
+ export { publishAppConfig } from './publishAppConfig.js';
11
+ export { tagAppBundle } from './tagAppBundle.js';
12
+ export { uploadAppBundle } from './uploadAppBundle.js';
13
+ export { Spinner } from './spinner.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,32 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /**
11
+ * Make sure the app is registerred in the app-service
12
+ * @param endpoint <string> The endpoint to make a call to
13
+ * @param appKey <string> The appkey to check for
14
+ * @returns response object as json
15
+ */
16
+ export const isAppRegistered = (endpoint, appKey) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const requestApp = yield fetch(endpoint, {
18
+ headers: {
19
+ Authorization: `Bearer ${process.env.FUSION_TOKEN}`,
20
+ },
21
+ });
22
+ if (requestApp.status === 404) {
23
+ throw new Error(`The appkey '${appKey}' is not registered, visit the app-admin app and register the application there.`);
24
+ }
25
+ if (!requestApp.ok) {
26
+ const response = yield requestApp.json();
27
+ console.log(response);
28
+ throw new Error(`Could not connect to apps-service. HTTP status ${requestApp.status}, ${requestApp.statusText}`);
29
+ }
30
+ return yield requestApp.json();
31
+ });
32
+ //# sourceMappingURL=isAppRegistered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAppRegistered.js","sourceRoot":"","sources":["../../../src/bin/utils/isAppRegistered.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,QAAgB,EAAE,MAAc,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACrC,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;SACtD;KACJ,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,eAAe,MAAM,kFAAkF,CAC1G,CAAC;IACN,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,kDAAkD,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,EAAE,CAClG,CAAC;IACN,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC,CAAA,CAAC"}
@@ -14,6 +14,7 @@ export const loadAppConfig = (env, pkg, options) => __awaiter(void 0, void 0, vo
14
14
  const spinner = Spinner.Current;
15
15
  try {
16
16
  spinner.start('create application configuration');
17
+ spinner.info(`generating config with ${chalk.red.dim(env.command)} command in ${chalk.green.dim(env.mode)} mode`);
17
18
  const baseAppConfig = createAppConfigFromPackage(pkg);
18
19
  const appConfig = yield createAppConfig(env, baseAppConfig, { file: options === null || options === void 0 ? void 0 : options.file });
19
20
  spinner.succeed();
@@ -1 +1 @@
1
- {"version":3,"file":"load-app-config.js","sourceRoot":"","sources":["../../../src/bin/utils/load-app-config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAItF,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,GAAsB,EACtB,GAAuB,EACvB,OAEC,EACH,EAAE;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACR,0BAA0B,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAC7E,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACR,wCACI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAC,CAAC,CAAC,UAAU,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAChD,EAAE,CACL,CAAC;QACF,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"load-app-config.js","sourceRoot":"","sources":["../../../src/bin/utils/load-app-config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAItF,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,GAAsB,EACtB,GAAuB,EACvB,OAEC,EACH,EAAE;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CACR,0BAA0B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CACtG,CAAC;QACF,MAAM,aAAa,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACR,0BAA0B,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAC7E,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACR,wCACI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAC,CAAC,CAAC,UAAU,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAChD,EAAE,CACL,CAAC;QACF,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -11,18 +11,23 @@ import { Spinner } from './spinner.js';
11
11
  import { formatPath, chalk } from './format.js';
12
12
  import { createManifest, createManifestFromPackage } from '../../lib/app-manifest.js';
13
13
  export const loadAppManifest = (env, pkg, options) => __awaiter(void 0, void 0, void 0, function* () {
14
- const spinner = Spinner.Current;
14
+ const spinner = Spinner.Clone();
15
15
  try {
16
16
  spinner.start('create application manifest');
17
17
  const baseManifest = yield createManifestFromPackage(pkg);
18
18
  spinner.info('created application manifest from package.json');
19
+ // TODO - this need to come from the config
20
+ if (env.command !== 'serve') {
21
+ baseManifest.build.entryPoint =
22
+ pkg.packageJson.type === 'module' ? 'app-bundle.js' : 'app-bundle.mjs';
23
+ }
24
+ spinner.info(`generating manifest with ${chalk.red.dim(env.command)} command in ${chalk.green.dim(env.mode)} mode`);
19
25
  const manifest = yield createManifest(env, baseManifest, { file: options === null || options === void 0 ? void 0 : options.file });
20
- spinner.succeed();
21
26
  if (manifest.path) {
22
- spinner.info(`generating manifest from ${formatPath(manifest.path, { relative: true })}`);
27
+ spinner.succeed(`Created manifest from ${formatPath(manifest.path, { relative: true })}`);
23
28
  }
24
29
  else {
25
- spinner.info(chalk.dim('no local manifest config applied, using default generated'));
30
+ spinner.succeed(chalk.dim('no local manifest config applied, using default generated'));
26
31
  }
27
32
  return manifest;
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load-manifest.js","sourceRoot":"","sources":["../../../src/bin/utils/load-manifest.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAItF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,GAAsB,EACtB,GAAuB,EACvB,OAEC,EACH,EAAE;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,OAAO,EAAE,CAAC;QAElB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACR,4BAA4B,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAC9E,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACR,8BAA8B,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAC,CAAC,CAAC,UAAU,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,CAAC;QACF,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"load-manifest.js","sourceRoot":"","sources":["../../../src/bin/utils/load-manifest.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAOtF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,GAAsB,EACtB,GAAuB,EACvB,OAEC,EACgD,EAAE;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAChC,IAAI,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE/D,2CAA2C;QAC3C,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,KAAM,CAAC,UAAU;gBAC1B,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC/E,CAAC;QAED,OAAO,CAAC,IAAI,CACR,4BAA4B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CACxG,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC,CAAC;QAElF,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CACX,yBAAyB,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAC3E,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACR,8BAA8B,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAC,CAAC,CAAC,UAAU,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,CAAC;QACF,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Spinner } from './spinner.js';
2
+ import { formatPath, chalk } from './format.js';
3
+ /**
4
+ * Logs the status of a proxy request using a spinner.
5
+ *
6
+ * @param proxyReq - The proxy request to log.
7
+ *
8
+ * The function attaches event listeners to the proxy request to handle
9
+ * 'response' and 'error' events. It uses a spinner to indicate the status
10
+ * of the request:
11
+ * - On a successful response (status code < 400), the spinner succeeds.
12
+ * - On a response with a status code >= 400, the spinner warns with the status message.
13
+ * - On an error, the spinner fails.
14
+ */
15
+ export const proxyRequestLogger = (proxyReq) => {
16
+ const spinner = Spinner.Clone();
17
+ spinner.ora.suffixText = formatPath([proxyReq.protocol, '//', proxyReq.host, proxyReq.path].join(''));
18
+ spinner.start('proxy request');
19
+ proxyReq.on('response', (res) => {
20
+ var _a;
21
+ if (Number(res.statusCode) < 400) {
22
+ spinner.succeed();
23
+ }
24
+ else {
25
+ spinner.warn(chalk.yellow((_a = res.statusMessage) !== null && _a !== void 0 ? _a : `${res.statusCode} `));
26
+ }
27
+ spinner.stop();
28
+ });
29
+ proxyReq.on('error', () => {
30
+ spinner.fail();
31
+ });
32
+ };
33
+ export default proxyRequestLogger;
34
+ //# sourceMappingURL=proxy-request-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-request-logger.js","sourceRoot":"","sources":["../../../src/bin/utils/proxy-request-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAuB,EAAE,EAAE;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAC/B,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CACnE,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC;YAC/B,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAA,GAAG,CAAC,aAAa,mCAAI,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACtB,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}