@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
@@ -0,0 +1,36 @@
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
+ * Publishes app config to the apps-service endpoint
12
+ * @param endpoint string The endpoint to upload to
13
+ * @param appKey The application key
14
+ * @param config Object with app config
15
+ * @returns HTTP response as json
16
+ */
17
+ export const publishAppConfig = (endpoint, appKey, config) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const requestConfig = yield fetch(endpoint, {
19
+ method: 'PUT',
20
+ body: JSON.stringify(config),
21
+ headers: {
22
+ Authorization: `Bearer ${process.env.FUSION_TOKEN}`,
23
+ 'Content-Type': 'application/json',
24
+ },
25
+ });
26
+ if (requestConfig.status === 410) {
27
+ throw new Error(`App ${appKey} is deleted from apps-service. HTTP status ${requestConfig.status}, ${requestConfig.statusText}`);
28
+ }
29
+ else if (!requestConfig.ok || requestConfig.status >= 400) {
30
+ const response = yield requestConfig.json();
31
+ console.log(response);
32
+ throw new Error(`Failed to upload config. HTTP status ${requestConfig.status}, ${requestConfig.statusText}`);
33
+ }
34
+ return requestConfig.json();
35
+ });
36
+ //# sourceMappingURL=publishAppConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishAppConfig.js","sourceRoot":"","sources":["../../../src/bin/utils/publishAppConfig.ts"],"names":[],"mappings":";;;;;;;;;AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAO,QAAgB,EAAE,MAAc,EAAE,MAAiB,EAAE,EAAE;IAC1F,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;YACnD,cAAc,EAAE,kBAAkB;SACrC;KACJ,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACX,OAAO,MAAM,8CAA8C,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,UAAU,EAAE,CACjH,CAAC;IACN,CAAC;SAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,aAAa,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,wCAAwC,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,UAAU,EAAE,CAC9F,CAAC;IACN,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAA,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Make sure the user has a valid azure token.
3
+ */
4
+ export const requireToken = () => {
5
+ var _a;
6
+ if (!((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.FUSION_TOKEN)) {
7
+ throw new Error('Missing required environment variable FUSION_TOKEN. Please set it before running this command.');
8
+ }
9
+ };
10
+ //# sourceMappingURL=requireToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requireToken.js","sourceRoot":"","sources":["../../../src/bin/utils/requireToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;;IAC7B,IAAI,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,0CAAE,YAAY,CAAA,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACX,gGAAgG,CACnG,CAAC;IACN,CAAC;AACL,CAAC,CAAC"}
@@ -12,10 +12,20 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
12
12
  var _Spinner_ora;
13
13
  import ora from 'ora';
14
14
  const parseArgs = (args) => args.length ? args.join(' ') : undefined;
15
+ const originalConsole = console;
15
16
  export class Spinner {
16
17
  get ora() {
17
18
  return __classPrivateFieldGet(this, _Spinner_ora, "f");
18
19
  }
20
+ set attachConsole(value) {
21
+ if (value) {
22
+ console.log = this.info.bind(this);
23
+ console.info = this.info.bind(this);
24
+ }
25
+ else {
26
+ console = originalConsole;
27
+ }
28
+ }
19
29
  static Global(options) {
20
30
  _spinner = new Spinner(options);
21
31
  return _spinner;
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/bin/utils/spinner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,GAA0B,MAAM,KAAK,CAAC;AAE7C,MAAM,SAAS,GAAG,CAAC,IAAc,EAAsB,EAAE,CACrD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE7C,MAAM,OAAO,OAAO;IAGhB,IAAI,GAAG;QACH,OAAO,uBAAA,IAAI,oBAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAiB;QAC3B,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAiB;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,QAAQ,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,OAAgB;QAC/B,QAAQ,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,YAAY,OAAiB;QAxB7B,+BAAU;QAyBN,uBAAA,IAAI,gBAAQ,GAAG,CAAC,OAAO,CAAC,MAAA,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,uBAAA,IAAI,oBAAK,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,GAAG,IAAc;QACrB,uBAAA,IAAI,oBAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,GAAG,IAAc;QACnB,uBAAA,IAAI,oBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,KAAK;QACD,uBAAA,IAAI,oBAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IACD,IAAI;QACA,uBAAA,IAAI,oBAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IACD,cAAc,CAAC,GAAG,IAAuC;QACrD,uBAAA,IAAI,oBAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;;AAED,IAAI,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/bin/utils/spinner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,GAA0B,MAAM,KAAK,CAAC;AAE7C,MAAM,SAAS,GAAG,CAAC,IAAc,EAAsB,EAAE,CACrD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE7C,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,OAAO,OAAO;IAGhB,IAAI,GAAG;QACH,OAAO,uBAAA,IAAI,oBAAK,CAAC;IACrB,CAAC;IAED,IAAI,aAAa,CAAC,KAAc;QAC5B,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,eAAe,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAiB;QAC3B,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAiB;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,QAAQ,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,OAAgB;QAC/B,QAAQ,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,YAAY,OAAiB;QAjC7B,+BAAU;QAkCN,uBAAA,IAAI,gBAAQ,GAAG,CAAC,OAAO,CAAC,MAAA,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,uBAAA,IAAI,oBAAK,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,GAAG,IAAc;QACrB,uBAAA,IAAI,oBAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,GAAG,IAAc;QACnB,uBAAA,IAAI,oBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,GAAG,IAAc;QAClB,uBAAA,IAAI,oBAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,KAAK;QACD,uBAAA,IAAI,oBAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IACD,IAAI;QACA,uBAAA,IAAI,oBAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IACD,cAAc,CAAC,GAAG,IAAuC;QACrD,uBAAA,IAAI,oBAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;;AAED,IAAI,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,35 @@
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
+ * Send request to apps-service to tag a bundle.
12
+ * @param endpoint string The endpoint to send request to.
13
+ * @param version string The version to tag the bundle with.
14
+ * @returns Response object as json.
15
+ */
16
+ export const tagAppBundle = (endpoint, version) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const requestTag = yield fetch(endpoint, {
18
+ method: 'PUT',
19
+ body: JSON.stringify({ version }),
20
+ headers: {
21
+ Authorization: `Bearer ${process.env.FUSION_TOKEN}`,
22
+ 'Content-Type': 'application/json',
23
+ },
24
+ });
25
+ if (requestTag.status === 404) {
26
+ throw new Error(`Failed to tag bundle, make sure version ${version} exist. HTTP status ${requestTag.status} - ${requestTag.statusText}`);
27
+ }
28
+ if (requestTag.status !== 200) {
29
+ const response = yield requestTag.json();
30
+ console.log(response);
31
+ throw new Error(`Failed to tag bundle. HTTP status ${requestTag.status}, ${requestTag.statusText}`);
32
+ }
33
+ return requestTag.json();
34
+ });
35
+ //# sourceMappingURL=tagAppBundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagAppBundle.js","sourceRoot":"","sources":["../../../src/bin/utils/tagAppBundle.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAO,QAAgB,EAAE,OAAe,EAAE,EAAE;IACpE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACrC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;YACnD,cAAc,EAAE,kBAAkB;SACrC;KACJ,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,2CAA2C,OAAO,uBAAuB,UAAU,CAAC,MAAM,MAAM,UAAU,CAAC,UAAU,EAAE,CAC1H,CAAC;IACN,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,qCAAqC,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,EAAE,CACrF,CAAC;IACN,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAA,CAAC"}
@@ -0,0 +1,54 @@
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 { readFileSync } from 'node:fs';
11
+ /**
12
+ * Function that uploads a zip bundle to the endpoint.
13
+ * @param endpoint string The endpoint to upload to
14
+ * @param bundle string The filename to upload
15
+ * @returns Object
16
+ */
17
+ export const uploadAppBundle = (endpoint, bundle) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const state = {
19
+ buffer: null,
20
+ };
21
+ try {
22
+ state.buffer = readFileSync(bundle);
23
+ }
24
+ catch (_a) {
25
+ throw new Error(`😞 Could not read bundle ${bundle}, does it exist?`);
26
+ }
27
+ const requestBundle = yield fetch(endpoint, {
28
+ method: 'POST',
29
+ body: state.buffer,
30
+ headers: {
31
+ Authorization: `Bearer ${process.env.FUSION_TOKEN}`,
32
+ 'Content-Type': 'application/zip',
33
+ },
34
+ });
35
+ if (requestBundle.status === 401 || requestBundle.status === 403) {
36
+ throw new Error(`This is not allowed for this role on this app. HTTP message: ${requestBundle.statusText}`);
37
+ }
38
+ if (requestBundle.status === 404) {
39
+ throw new Error(`This app do not exist. HTTP message: ${requestBundle.statusText}`);
40
+ }
41
+ if (requestBundle.status === 409) {
42
+ throw new Error(`This version is already published. HTTP message: ${requestBundle.statusText}`);
43
+ }
44
+ if (requestBundle.status === 410) {
45
+ throw new Error(`This app is deleted. HTTP message: ${requestBundle.statusText}`);
46
+ }
47
+ if (!requestBundle.ok) {
48
+ const json = yield requestBundle.json();
49
+ console.error(json);
50
+ throw new Error(`Failed to publish bundle. HTTP status ${requestBundle.status}, ${requestBundle.statusText}`);
51
+ }
52
+ return requestBundle.json();
53
+ });
54
+ //# sourceMappingURL=uploadAppBundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadAppBundle.js","sourceRoot":"","sources":["../../../src/bin/utils/uploadAppBundle.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,QAAgB,EAAE,MAAc,EAAE,EAAE;IACtE,MAAM,KAAK,GAA8B;QACrC,MAAM,EAAE,IAAI;KACf,CAAC;IAEF,IAAI,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,WAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;YACnD,cAAc,EAAE,iBAAiB;SACpC;KACJ,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACX,gEAAgE,aAAa,CAAC,UAAU,EAAE,CAC7F,CAAC;IACN,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACX,oDAAoD,aAAa,CAAC,UAAU,EAAE,CACjF,CAAC;IACN,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,yCAAyC,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,UAAU,EAAE,CAC/F,CAAC;IACN,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAA,CAAC"}
@@ -12,6 +12,7 @@ import { AssertionError, assertObject } from './utils/assert.js';
12
12
  import deepmerge from 'deepmerge/index.js';
13
13
  export const appConfigFilename = 'app.config';
14
14
  export function assertAppConfig(value) {
15
+ // TODO
15
16
  assertObject(value);
16
17
  }
17
18
  export const defineAppConfig = (fn) => fn;
@@ -37,9 +38,10 @@ export const createAppConfigFromPackage = (_pkg) => {
37
38
  return appConfig;
38
39
  };
39
40
  export const createAppConfig = (env, base, options) => __awaiter(void 0, void 0, void 0, function* () {
41
+ var _a;
40
42
  const resolved = yield resolveAppConfig(options);
41
43
  if (resolved) {
42
- const config = yield initiateConfig(resolved.config, env, { base });
44
+ const config = (_a = (yield initiateConfig(resolved.config, env, { base }))) !== null && _a !== void 0 ? _a : {};
43
45
  assertAppConfig(config);
44
46
  return { config, path: resolved.path };
45
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../src/lib/app-config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,UAAU,EAGV,cAAc,EAEd,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAc3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,KAAgB;IAE5C,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,IAAwB,EACxB,SAA6B,EACpB,EAAE;IACX,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAyB,CAAC;IACpE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAiB,EAAE,EAAE,CAC/C,UAAU,CAAY,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,iBAAiB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,OAEC,EAC0C,EAAE;IAC7C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO;YACH,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;IACN,CAAC;IACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAwB,EAAa,EAAE;IAC9E,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,GAAsB,EACtB,IAAe,EACf,OAA8B,EACe,EAAE;IAC/C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;SAAM,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,cAAc,CAAC;YACrB,OAAO,EAAE,gCAAgC,OAAO,CAAC,IAAI,EAAE;YACvD,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../src/lib/app-config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,UAAU,EAGV,cAAc,EAEd,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAc3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC5C,OAAO;IACP,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,IAAwB,EACxB,SAA6B,EACpB,EAAE;IACX,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAyB,CAAC;IACpE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAiB,EAAE,EAAE,CAC/C,UAAU,CAAY,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,iBAAiB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,OAEC,EAC0C,EAAE;IAC7C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO;YACH,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;IACN,CAAC;IACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAwB,EAAa,EAAE;IAC9E,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,GAAsB,EACtB,IAAe,EACf,OAA8B,EACe,EAAE;;IAC/C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAA,CAAC,MAAM,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC5E,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;SAAM,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,cAAc,CAAC;YACrB,OAAO,EAAE,gCAAgC,OAAO,CAAC,IAAI,EAAE;YACvD,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC,CAAA,CAAC"}
@@ -7,21 +7,68 @@ 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 deepmerge from 'deepmerge';
11
- import { resolveAppKey, resolveEntryPoint } from './app-package.js';
10
+ import deepMerge from 'deepmerge';
11
+ import { execSync } from 'node:child_process';
12
+ import { resolveAppKey, resolveEntryPoint, } from './app-package.js';
12
13
  import { loadConfig, initiateConfig, resolveConfig, } from './utils/config.js';
13
14
  import { AssertionError, assert, assertObject } from './utils/assert.js';
15
+ import { parse as parseSemver } from 'semver';
16
+ import { StandardIncludeAssetExtensions } from './plugins/app-assets/index.js';
17
+ /** base filename for configuration files */
14
18
  export const manifestConfigFilename = 'app.manifest.config';
19
+ /**
20
+ * Define a manifest for an application
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * export default defineAppManifest(async() => {
25
+ * return {
26
+ * ...AppManifest_properties
27
+ * }
28
+ * })
29
+ * ```
30
+ * @param fnOrObj - defines the manifest as an object or callback
31
+ */
15
32
  export const defineAppManifest = (fn) => fn;
16
33
  export function assertAppManifest(value) {
34
+ var _a;
17
35
  assert(value, 'expected manifest');
36
+ assert(value.build, 'expected build');
37
+ assert(parseSemver((_a = value.build) === null || _a === void 0 ? void 0 : _a.version), 'invalid version');
38
+ // TODO make assertions
18
39
  }
40
+ // /**
41
+ // * assert that the package version of the manifest is correct
42
+ // *
43
+ // * @TODO this should assert semver not .net syntax 🥺
44
+ // */
45
+ // export function assertPackageVersion(value: AppManifest['version']): asserts value {
46
+ // assertObjectEntries(value, {
47
+ // props: ['major', 'minor', 'patch'],
48
+ // assertion: (v, k): asserts v => assertNumber(v, `invalid value for version.${k}`),
49
+ // preMessage: 'expected package version',
50
+ // });
51
+ // }
52
+ /**
53
+ * @example
54
+ * ```ts
55
+ * export default defineAppManifest(base) => mergeManifests(base, {prop: value});
56
+ * ```
57
+ * @param base base manifest to merge with
58
+ * @param overrides target manifest to apply to base
59
+ * @returns deep merged manifest
60
+ */
19
61
  export const mergeManifests = (base, overrides) => {
20
- const manifest = deepmerge(base, overrides);
62
+ const manifest = deepMerge(base, overrides);
21
63
  assertAppManifest(manifest);
22
64
  return manifest;
23
65
  };
66
+ /** loads manifestFn from file */
24
67
  export const loadManifest = (filename) => loadConfig(filename !== null && filename !== void 0 ? filename : manifestConfigFilename);
68
+ /**
69
+ * tries to resolve manifest
70
+ * @see {@link resolveConfig | resolving config}
71
+ */
25
72
  export const resolveManifest = (options) => __awaiter(void 0, void 0, void 0, function* () {
26
73
  if (options === null || options === void 0 ? void 0 : options.file) {
27
74
  const config = yield loadManifest(options.file);
@@ -32,30 +79,65 @@ export const resolveManifest = (options) => __awaiter(void 0, void 0, void 0, fu
32
79
  }
33
80
  return resolveConfig(manifestConfigFilename, { find: options });
34
81
  });
82
+ const resolveGithubRepo = (pkg) => {
83
+ try {
84
+ /* get reporurl from package.json */
85
+ if (pkg.repository) {
86
+ return typeof pkg.repository === 'string' ? pkg.repository : pkg.repository.url;
87
+ }
88
+ else {
89
+ /* get reporurl from git command */
90
+ return execSync('git remote get-url origin')
91
+ .toString()
92
+ .trim()
93
+ .replace('git@github.com:', 'https://github.com/')
94
+ .replace(/.git$/, '');
95
+ }
96
+ }
97
+ catch (_a) {
98
+ return undefined;
99
+ }
100
+ };
101
+ const resolveGitCommitSha = () => {
102
+ try {
103
+ return execSync('git rev-parse HEAD').toString().trim();
104
+ }
105
+ catch (_a) {
106
+ return undefined;
107
+ }
108
+ };
35
109
  export const createManifestFromPackage = (pkg) => {
36
- var _a, _b, _c, _d;
37
110
  const { packageJson } = pkg;
38
111
  assertObject(packageJson, 'expected packageJson');
39
112
  assert(packageJson.name, 'expected [name] in packageJson');
40
113
  assert(packageJson.version, 'expected [version] in packageJson');
41
- const key = resolveAppKey(pkg.packageJson);
42
- const entry = resolveEntryPoint(pkg.packageJson);
43
- assert(entry, 'expected [version] in packageJson');
114
+ const entryPoint = resolveEntryPoint(packageJson);
44
115
  const manifest = {
45
- key,
46
- entry,
47
- version: packageJson.version,
48
- name: (_b = (_a = packageJson.manifest) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : key,
49
- shortName: (_d = (_c = packageJson.manifest) === null || _c === void 0 ? void 0 : _c.shortName) !== null && _d !== void 0 ? _d : key,
50
- description: packageJson.description,
116
+ appKey: resolveAppKey(pkg.packageJson),
117
+ displayName: packageJson.name,
118
+ description: packageJson.description || '',
119
+ keywords: packageJson.keywords,
120
+ type: 'standalone',
121
+ build: {
122
+ entryPoint,
123
+ version: packageJson.version,
124
+ timestamp: new Date().toISOString(),
125
+ githubRepo: resolveGithubRepo(packageJson),
126
+ commitSha: resolveGitCommitSha(),
127
+ annotations: packageJson.annotations,
128
+ projectPage: packageJson.homepage,
129
+ allowedExtensions: StandardIncludeAssetExtensions.map(
130
+ // TODO: @jaysencpp, this is just 🫤, extensions should not require leading dot
131
+ (ext) => `.${ext}`),
132
+ },
51
133
  };
52
- assertAppManifest(manifest);
53
134
  return manifest;
54
135
  };
55
136
  export const createManifest = (env, base, options) => __awaiter(void 0, void 0, void 0, function* () {
56
137
  const resolved = yield resolveManifest(options);
57
138
  if (resolved) {
58
- const manifest = yield initiateConfig(resolved.config, env, { base });
139
+ const configuredManifest = yield initiateConfig(resolved.config, env, { base });
140
+ const manifest = deepMerge(base, configuredManifest !== null && configuredManifest !== void 0 ? configuredManifest : {});
59
141
  assertAppManifest(manifest);
60
142
  return { manifest, path: resolved.path };
61
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-manifest.js","sourceRoot":"","sources":["../../src/lib/app-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-manifest.js","sourceRoot":"","sources":["../../src/lib/app-manifest.ts"],"names":[],"mappings":"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"}
@@ -7,21 +7,68 @@ 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 { existsSync } from 'node:fs';
11
+ import { dirname, relative } from 'node:path';
10
12
  import { readPackageUp, } from 'read-package-up';
11
13
  import { assert } from './utils/assert.js';
12
14
  export function defineAppPackage(fnOrObject) {
13
15
  return fnOrObject;
14
16
  }
15
- export const resolveEntryPoint = (packageJson) => {
16
- const { main: entry = packageJson.module } = packageJson;
17
- assert(entry, 'expected [main|module] in packageJson');
18
- return entry;
17
+ /**
18
+ * Resolves the entry point of a given package.
19
+ *
20
+ * This function attempts to find the entry point of a package by checking several
21
+ * common properties in the package's `package.json` file, such as `entrypoint`, `main`,
22
+ * and `module`. If none of these properties are found, it defaults to checking for
23
+ * common entry files like `src/index.ts`, `src/index.tsx`, `src/index.js`, and `src/index.jsx`.
24
+ *
25
+ * @param pkg - The resolved application package containing the package.json and path information.
26
+ * @returns The relative path to the resolved entry point.
27
+ * @throws Will throw an error if no entry point can be resolved.
28
+ */
29
+ export const resolveEntryPoint = (packageJson, pkgPath = '') => {
30
+ const entrypoint = [
31
+ packageJson.entrypoint,
32
+ packageJson.main,
33
+ packageJson.module,
34
+ 'src/index.ts',
35
+ 'src/index.tsx',
36
+ 'src/index.js',
37
+ 'src/index.jsx',
38
+ ]
39
+ .filter((x) => !!x)
40
+ .map((x) => relative(dirname(pkgPath), x))
41
+ .find((entry) => existsSync(entry));
42
+ assert(entrypoint, 'failed to resolve entrypoint');
43
+ return entrypoint;
19
44
  };
45
+ /**
46
+ * Resolves the application key from the given package.json object.
47
+ *
48
+ * @param packageJson - An object containing the 'name' property from the package.json.
49
+ * @returns The resolved application key, which is the package name with any leading '@' or scope removed.
50
+ * @throws Will throw an error if the 'name' property is not present in the packageJson.
51
+ */
20
52
  export const resolveAppKey = (packageJson) => {
21
53
  assert(packageJson.name, 'expected [name] in packageJson');
22
54
  return packageJson.name.replace(/^@|\w.*\//gm, '');
23
55
  };
24
- export const assertPackage = (_pkg) => { };
56
+ /**
57
+ * Asserts the validity of a given package by resolving its application key and entry point.
58
+ *
59
+ * @param pkg - A partial representation of the application's package JSON.
60
+ */
61
+ export const assertPackage = (pkg) => {
62
+ assert(resolveAppKey(pkg));
63
+ assert(resolveEntryPoint(pkg));
64
+ };
65
+ /**
66
+ * Resolves the application package by searching for the nearest `package.json` file.
67
+ *
68
+ * @param options - Optional parameters to customize the search behavior.
69
+ * @returns A promise that resolves to the found package information.
70
+ * @throws Will throw an error if the `package.json` file is not found.
71
+ */
25
72
  export const resolveAppPackage = (options) => __awaiter(void 0, void 0, void 0, function* () {
26
73
  const result = yield readPackageUp(options);
27
74
  if (!result) {
@@ -1 +1 @@
1
- {"version":3,"file":"app-package.js","sourceRoot":"","sources":["../../src/lib/app-package.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAEH,aAAa,GAEhB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsB3C,MAAM,UAAU,gBAAgB,CAAC,UAAiC;IAC9D,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAiD,EAAE,EAAE;IACnF,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAsC,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAA6B,EAAE,EAAE,GAAE,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,OAAkC,EACP,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"app-package.js","sourceRoot":"","sources":["../../src/lib/app-package.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAEH,aAAa,GAEhB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsB3C,MAAM,UAAU,gBAAgB,CAAC,UAAiC;IAC9D,OAAO,UAAU,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAwB,EAAE,UAAkB,EAAE,EAAU,EAAE;IACxF,MAAM,UAAU,GAAG;QACf,WAAW,CAAC,UAAU;QACtB,WAAW,CAAC,IAAI;QAChB,WAAW,CAAC,MAAM;QAClB,cAAc;QACd,eAAe;QACf,cAAc;QACd,eAAe;KAClB;SACI,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;IAEnD,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAsC,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAE,EAAE;IAC1D,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,iBAAiB,CAAC,GAAqB,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,OAAkC,EACP,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,102 @@
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 { createFilter } from 'vite';
11
+ import { emitAssetSync } from './emit-asset.js';
12
+ import { resolveAssetId } from './resolve-asset-id.js';
13
+ import { createExtensionFilterPattern } from './extension-filter-pattern.js';
14
+ import { ASSET_EXTENSIONS, PLUGIN_NAME } from './static.js';
15
+ const defaultInclude = createExtensionFilterPattern(ASSET_EXTENSIONS);
16
+ /**
17
+ * A Vite plugin to handle external resources in a library build.
18
+ *
19
+ * @param options - Configuration options for the plugin.
20
+ * @param options.name - Optional name for the emitted assets.
21
+ * @param options.include - Filter pattern to include specific files.
22
+ * @param options.exclude - Filter pattern to exclude specific files.
23
+ * @returns A Vite plugin object.
24
+ *
25
+ * @remarks
26
+ * This plugin is intended to be used only during the Vite library build process.
27
+ * It resolves asset IDs, emits assets, and exports them as URLs.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // vite.config.ts
32
+ * import { ExternalAppAssetPlugin } from '@equinor/fusion-framework-cli/plugins/app-assets-plugin';
33
+ *
34
+ * export default {
35
+ * plugins: [
36
+ * ExternalAppAssetPlugin({
37
+ * name: 'my-asset',
38
+ * include: ['svg', 'png'],
39
+ * exclude: 'node_modules/**',
40
+ * }),
41
+ * ],
42
+ * };
43
+ * ```
44
+ */
45
+ export const AppAssetExportPlugin = (options = {}) => {
46
+ const { name, include = defaultInclude, exclude } = options;
47
+ let viteConfig;
48
+ const assetsPathMap = new Map();
49
+ const filter = createFilter(include, exclude);
50
+ return {
51
+ name: PLUGIN_NAME,
52
+ enforce: 'pre',
53
+ apply: 'build',
54
+ configResolved(config) {
55
+ viteConfig = config;
56
+ },
57
+ resolveId(source_1) {
58
+ return __awaiter(this, arguments, void 0, function* (source, importer = '', opts) {
59
+ var _a;
60
+ if (viteConfig.build.lib === false) {
61
+ this.warn(`this plugin is only for vite build lib`);
62
+ }
63
+ // skip resolves triggered by plugin self
64
+ if (((_a = opts.custom) === null || _a === void 0 ? void 0 : _a.caller) === PLUGIN_NAME) {
65
+ return null;
66
+ }
67
+ // resolve asset ID, the ID should refer to the actual asset file
68
+ const assetId = yield resolveAssetId(this, source, importer, Object.assign(Object.assign({}, opts), { custom: Object.assign(Object.assign({}, opts.custom), { caller: PLUGIN_NAME }) }));
69
+ // skip if asset is not found or filtered out
70
+ const { id } = assetId !== null && assetId !== void 0 ? assetId : {};
71
+ const shouldIncludeAsset = id && filter(id);
72
+ if (!shouldIncludeAsset) {
73
+ return null;
74
+ }
75
+ try {
76
+ // emit asset and index the asset path
77
+ const { outDir, assetsDir } = viteConfig.build;
78
+ const assetPath = emitAssetSync(this, id, {
79
+ name,
80
+ outDir,
81
+ assetsDir,
82
+ });
83
+ assetsPathMap.set(id, assetPath);
84
+ }
85
+ catch (err) {
86
+ this.warn(err.message);
87
+ return null;
88
+ }
89
+ });
90
+ },
91
+ load(id) {
92
+ // lookup asset path and export as URL
93
+ const assetPath = assetsPathMap.get(id);
94
+ if (assetPath) {
95
+ // ensure asset path is relative from the script load path
96
+ return `export default new URL(/* @vite-ignore */'${assetPath}', import.meta.url).href`;
97
+ }
98
+ },
99
+ };
100
+ };
101
+ export default AppAssetExportPlugin;
102
+ //# sourceMappingURL=app-asset-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-asset-plugin.js","sourceRoot":"","sources":["../../../../src/lib/plugins/app-assets/app-asset-plugin.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAwD,MAAM,MAAM,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,cAAc,GAAG,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,UAII,EAAE,EACA,EAAE;IACR,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5D,IAAI,UAA0B,CAAC;IAE/B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9C,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;QACd,cAAc,CAAC,MAAM;YACjB,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;QACK,SAAS;iEAAC,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,IAAI;;gBACvC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACxD,CAAC;gBACD,yCAAyC;gBACzC,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,MAAK,WAAW,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,iEAAiE;gBACjE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,kCACpD,IAAI,KACP,MAAM,kCACC,IAAI,CAAC,MAAM,KACd,MAAM,EAAE,WAAW,OAEzB,CAAC;gBAEH,6CAA6C;gBAC7C,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAC;oBACD,sCAAsC;oBACtC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;oBAC/C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE;wBACtC,IAAI;wBACJ,MAAM;wBACN,SAAS;qBACZ,CAAC,CAAC;oBACH,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,SAAU,CAAC,CAAC;gBACtC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,IAAI,CAAC,IAAI,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;oBAClC,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;SAAA;QACD,IAAI,CAAC,EAAE;YACH,sCAAsC;YACtC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE,CAAC;gBACZ,0DAA0D;gBAC1D,OAAO,6CAA6C,SAAS,0BAA0B,CAAC;YAC5F,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import path from 'node:path';
2
+ import { interpolateName } from 'loader-utils';
3
+ import { readAssetContentSync } from './read-asset-content.js';
4
+ /**
5
+ * Synchronously emits an asset file based on the provided context and options.
6
+ *
7
+ * @param context - The plugin context used for emitting the file and logging warnings.
8
+ * @param id - The identifier of the asset, which may include a resource query.
9
+ * @param options - Optional parameters for customizing the emitted asset.
10
+ * @param options.name - The name template for the emitted asset file. Defaults to '[name].[ext]'.
11
+ * @param options.outDir - The output directory where the asset will be emitted. Defaults to 'dist'.
12
+ * @param options.assetsDir - The directory within the output directory where assets will be stored. Defaults to 'assets'.
13
+ * @returns The path of the emitted asset relative to the assets directory, or null if the asset content could not be read.
14
+ */
15
+ export const emitAssetSync = (context, id, options = {}) => {
16
+ const { outDir = 'dist', assetsDir = 'assets', name = '[name].[ext]' } = options;
17
+ const [originalFileName, resourceQuery] = id.split('?');
18
+ // read asset content, early return if not found
19
+ const content = readAssetContentSync(id);
20
+ if (!content || content.byteLength === 0) {
21
+ throw new Error(`Could not read asset content for ${id}`);
22
+ }
23
+ // generate asset file name
24
+ const url = interpolateName({
25
+ resourcePath: originalFileName,
26
+ resourceQuery,
27
+ }, name, { content });
28
+ const assetPath = path.posix.join(assetsDir, url);
29
+ const fileName = assetPath.replace(`?${resourceQuery}`, '');
30
+ const fullName = path.join(path.isAbsolute(outDir) ? process.cwd() : '', outDir, assetPath);
31
+ // write asset to file
32
+ context.emitFile({
33
+ fileName,
34
+ name: fullName,
35
+ type: 'asset',
36
+ source: content,
37
+ });
38
+ return assetPath;
39
+ };
40
+ export default emitAssetSync;
41
+ //# sourceMappingURL=emit-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-asset.js","sourceRoot":"","sources":["../../../../src/lib/plugins/app-assets/emit-asset.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAI/D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,OAAsB,EACtB,EAAU,EACV,UAII,EAAE,EACO,EAAE;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IACjF,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExD,gDAAgD;IAChD,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,2BAA2B;IAC3B,MAAM,GAAG,GAAG,eAAe,CACvB;QACI,YAAY,EAAE,gBAAgB;QAC9B,aAAa;KACC,EAClB,IAAI,EACJ,EAAE,OAAO,EAAE,CACd,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5F,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAC;QACb,QAAQ;QACR,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}