@equinor/fusion-framework-cli 10.0.0-alpha-df90c0f890db097d17d4b84fe6face6323143970 → 10.0.0-alpha-8601e3ca5d5b2d11057913cdfc04bbc5e908a598
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/bin/create-dev-serve.js +22 -22
- package/dist/bin/create-dev-serve.js.map +1 -1
- package/dist/bin/plugins/app-proxy.js +6 -16
- package/dist/bin/plugins/app-proxy.js.map +1 -1
- package/dist/bin/public/assets/{index-jTM3B4Be.js → index-CptNv55Q.js} +14 -14
- package/dist/bin/public/index.html +1 -1
- package/dist/lib/app-manifest.js +2 -1
- package/dist/lib/app-manifest.js.map +1 -1
- package/dist/types/bin/create-export-manifest.d.ts +1 -1
- package/package.json +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -11,13 +11,13 @@ import { createServer, defineConfig, mergeConfig, } from 'vite';
|
|
|
11
11
|
import { assert } from 'node:console';
|
|
12
12
|
import { join, relative } from 'node:path';
|
|
13
13
|
import portFinder from 'portfinder';
|
|
14
|
+
import deepmerge from 'deepmerge/index.js';
|
|
14
15
|
import ViteRestart from 'vite-plugin-restart';
|
|
15
16
|
import { appProxyPlugin } from './plugins/app-proxy.js';
|
|
16
17
|
import { externalPublicPlugin } from './plugins/external-public.js';
|
|
17
18
|
import { supportedExt } from '../lib/utils/config.js';
|
|
18
19
|
import { manifestConfigFilename } from '../lib/app-manifest.js';
|
|
19
20
|
import { appConfigFilename } from '../lib/app-config.js';
|
|
20
|
-
import { resolveAppKey } from '../lib/app-package.js';
|
|
21
21
|
import { loadAppConfig } from './utils/load-app-config.js';
|
|
22
22
|
import { loadViteConfig } from './utils/load-vite-config.js';
|
|
23
23
|
import { loadPackage } from './utils/load-package.js';
|
|
@@ -30,12 +30,30 @@ export const createDevServer = (options) => __awaiter(void 0, void 0, void 0, fu
|
|
|
30
30
|
const { configSourceFiles, library, port, devPortalPath } = options;
|
|
31
31
|
const spinner = Spinner.Global({ prefixText: chalk.dim('dev-server') });
|
|
32
32
|
const pkg = yield loadPackage();
|
|
33
|
-
const appKey = resolveAppKey(pkg.packageJson);
|
|
34
33
|
const env = {
|
|
35
34
|
command: 'serve',
|
|
36
35
|
mode: (_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'development',
|
|
37
36
|
root: pkg.root,
|
|
38
37
|
};
|
|
38
|
+
const generateManifest = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
const { manifest } = yield loadAppManifest(env, pkg, {
|
|
40
|
+
file: configSourceFiles.manifest,
|
|
41
|
+
});
|
|
42
|
+
const assetPath = `bundles/apps/${manifest.appKey}/${pkg.packageJson.version}`;
|
|
43
|
+
return deepmerge(manifest, {
|
|
44
|
+
build: {
|
|
45
|
+
assetPath,
|
|
46
|
+
configUrl: `${assetPath}/config`,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
const generateConfig = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
const { config } = yield loadAppConfig(env, pkg, {
|
|
52
|
+
file: configSourceFiles.app,
|
|
53
|
+
});
|
|
54
|
+
return config;
|
|
55
|
+
});
|
|
56
|
+
const { appKey } = yield generateManifest();
|
|
39
57
|
/**
|
|
40
58
|
* Load application manifest
|
|
41
59
|
* Application might have overridden the `appKey`
|
|
@@ -67,26 +85,8 @@ export const createDevServer = (options) => __awaiter(void 0, void 0, void 0, fu
|
|
|
67
85
|
app: {
|
|
68
86
|
key: appKey,
|
|
69
87
|
version: String(pkg.packageJson.version),
|
|
70
|
-
generateConfig
|
|
71
|
-
|
|
72
|
-
file: configSourceFiles.app,
|
|
73
|
-
});
|
|
74
|
-
return config;
|
|
75
|
-
}),
|
|
76
|
-
generateManifest: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
-
const { manifest } = yield loadAppManifest(env, pkg, {
|
|
78
|
-
file: configSourceFiles.manifest,
|
|
79
|
-
});
|
|
80
|
-
const assetPath = `bundles/apps/${appKey}/${pkg.packageJson.version}`;
|
|
81
|
-
// TODO: @eikeland we need to fix this
|
|
82
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
83
|
-
// @ts-ignore
|
|
84
|
-
return {
|
|
85
|
-
appKey,
|
|
86
|
-
build: Object.assign(Object.assign({}, manifest), { assetPath, configUrl: `${assetPath}/config` }),
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
|
-
};
|
|
89
|
-
}),
|
|
88
|
+
generateConfig,
|
|
89
|
+
generateManifest
|
|
90
90
|
},
|
|
91
91
|
}),
|
|
92
92
|
// Restart the server when config changes or the dev portal source is updated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-dev-serve.js","sourceRoot":"","sources":["../../src/bin/create-dev-serve.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,WAAW,GAGd,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAA0B,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-dev-serve.js","sourceRoot":"","sources":["../../src/bin/create-dev-serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ 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 { assert } from 'node:console';
|
|
11
10
|
/**
|
|
12
11
|
* Preserve token for executing proxy assets
|
|
13
12
|
*
|
|
@@ -71,7 +70,7 @@ export const appProxyPlugin = (options) => {
|
|
|
71
70
|
(_a = config.server) !== null && _a !== void 0 ? _a : (config.server = {});
|
|
72
71
|
config.server.proxy = {
|
|
73
72
|
// proxy all api calls to the fusion apps backend
|
|
74
|
-
[
|
|
73
|
+
[proxyPath]: {
|
|
75
74
|
target,
|
|
76
75
|
changeOrigin: true,
|
|
77
76
|
secure: false,
|
|
@@ -79,23 +78,14 @@ export const appProxyPlugin = (options) => {
|
|
|
79
78
|
configure: (proxy) => {
|
|
80
79
|
proxy.on('proxyReq', (proxyReq) => {
|
|
81
80
|
const token = proxyReq.getHeader('authorization');
|
|
81
|
+
// preserve token for executing proxy assets
|
|
82
82
|
if (typeof token === 'string') {
|
|
83
83
|
__APP_API_TOKEN__ = token;
|
|
84
|
+
// apply token to proxy request
|
|
85
|
+
}
|
|
86
|
+
else if (__APP_API_TOKEN__) {
|
|
87
|
+
proxyReq.setHeader('authorization', __APP_API_TOKEN__);
|
|
84
88
|
}
|
|
85
|
-
});
|
|
86
|
-
proxy.on('proxyReq', onProxyReq);
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
// proxy all bundle requests to the fusion apps backend
|
|
90
|
-
[`${proxyPath}/bundles`]: {
|
|
91
|
-
target,
|
|
92
|
-
changeOrigin: true,
|
|
93
|
-
secure: false,
|
|
94
|
-
rewrite: (path) => path.replace(proxyPath, ''),
|
|
95
|
-
configure: (proxy) => {
|
|
96
|
-
proxy.on('proxyReq', (proxyReq) => {
|
|
97
|
-
assert(__APP_API_TOKEN__, 'expected token to be set');
|
|
98
|
-
proxyReq.setHeader('authorization', __APP_API_TOKEN__);
|
|
99
89
|
});
|
|
100
90
|
proxy.on('proxyReq', onProxyReq);
|
|
101
91
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-proxy.js","sourceRoot":"","sources":["../../../src/bin/plugins/app-proxy.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"app-proxy.js","sourceRoot":"","sources":["../../../src/bin/plugins/app-proxy.ts"],"names":[],"mappings":"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"}
|