@appshell/loader 1.0.0-alpha.14 → 1.0.0-alpha.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -21
- package/dist/main.js +1 -1
- package/dist/types/config/src/axios.d.ts +0 -1
- package/dist/types/config/src/configmap.d.ts +0 -1
- package/dist/types/config/src/context.d.ts +3 -4
- package/dist/types/config/src/credentials.d.ts +0 -2
- package/dist/types/config/src/generate.manifest.d.ts +0 -1
- package/dist/types/config/src/index.d.ts +2 -7
- package/dist/types/config/src/mappers/appshell.config.d.ts +0 -1
- package/dist/types/config/src/outdated.d.ts +0 -1
- package/dist/types/config/src/publish.d.ts +3 -4
- package/dist/types/config/src/sync.d.ts +0 -1
- package/dist/types/config/src/types.d.ts +9 -15
- package/dist/types/config/src/utils/blur.d.ts +0 -1
- package/dist/types/config/src/utils/compare.d.ts +0 -1
- package/dist/types/config/src/utils/config.d.ts +0 -1
- package/dist/types/config/src/utils/copy.d.ts +0 -1
- package/dist/types/config/src/utils/index.d.ts +0 -4
- package/dist/types/config/src/utils/list.d.ts +0 -1
- package/dist/types/config/src/utils/load.d.ts +0 -1
- package/dist/types/config/src/validators/AppshellTemplateValidator.d.ts +0 -1
- package/dist/types/config/src/validators/index.d.ts +0 -3
- package/dist/types/loader/src/index.d.ts +0 -1
- package/dist/types/loader/src/loadAppshellComponent.d.ts +0 -1
- package/dist/types/loader/src/remoteLoader.d.ts +2 -4
- package/dist/types/loader/src/resolvers.d.ts +4 -12
- package/dist/types/loader/src/types.d.ts +0 -1
- package/dist/types/runtime/src/errors.d.ts +25 -0
- package/dist/types/runtime/src/index.d.ts +3 -0
- package/dist/types/runtime/src/store.d.ts +25 -0
- package/dist/types/runtime/src/types.d.ts +9 -0
- package/package.json +10 -3
- package/CHANGELOG.md +0 -227
- package/__tests__/fixtures/TestComponent.ts +0 -3
- package/__tests__/loadAppshellComponent.spec.ts +0 -68
- package/__tests__/remoteLoader.spec.ts +0 -120
- package/__tests__/resolvers.spec.ts +0 -128
- package/dist/types/config/src/axios.d.ts.map +0 -1
- package/dist/types/config/src/configmap.d.ts.map +0 -1
- package/dist/types/config/src/context.d.ts.map +0 -1
- package/dist/types/config/src/credentials.d.ts.map +0 -1
- package/dist/types/config/src/deregister.d.ts +0 -3
- package/dist/types/config/src/deregister.d.ts.map +0 -1
- package/dist/types/config/src/generate.env.d.ts +0 -3
- package/dist/types/config/src/generate.env.d.ts.map +0 -1
- package/dist/types/config/src/generate.global-config.d.ts +0 -10
- package/dist/types/config/src/generate.global-config.d.ts.map +0 -1
- package/dist/types/config/src/generate.manifest.d.ts.map +0 -1
- package/dist/types/config/src/index.d.ts.map +0 -1
- package/dist/types/config/src/mappers/appshell.config.d.ts.map +0 -1
- package/dist/types/config/src/outdated.d.ts.map +0 -1
- package/dist/types/config/src/publish.d.ts.map +0 -1
- package/dist/types/config/src/register.d.ts +0 -4
- package/dist/types/config/src/register.d.ts.map +0 -1
- package/dist/types/config/src/sync.d.ts.map +0 -1
- package/dist/types/config/src/types.d.ts.map +0 -1
- package/dist/types/config/src/utils/blur.d.ts.map +0 -1
- package/dist/types/config/src/utils/compare.d.ts.map +0 -1
- package/dist/types/config/src/utils/config.d.ts.map +0 -1
- package/dist/types/config/src/utils/copy.d.ts.map +0 -1
- package/dist/types/config/src/utils/index.d.ts.map +0 -1
- package/dist/types/config/src/utils/isValidUrl.d.ts +0 -3
- package/dist/types/config/src/utils/isValidUrl.d.ts.map +0 -1
- package/dist/types/config/src/utils/list.d.ts.map +0 -1
- package/dist/types/config/src/utils/load.d.ts.map +0 -1
- package/dist/types/config/src/utils/loadJson.d.ts +0 -10
- package/dist/types/config/src/utils/loadJson.d.ts.map +0 -1
- package/dist/types/config/src/utils/merge.d.ts +0 -4
- package/dist/types/config/src/utils/merge.d.ts.map +0 -1
- package/dist/types/config/src/validators/AppshellGlobalConfigValidator.d.ts +0 -4
- package/dist/types/config/src/validators/AppshellGlobalConfigValidator.d.ts.map +0 -1
- package/dist/types/config/src/validators/AppshellManifestValidator.d.ts +0 -4
- package/dist/types/config/src/validators/AppshellManifestValidator.d.ts.map +0 -1
- package/dist/types/config/src/validators/AppshellTemplateValidator.d.ts.map +0 -1
- package/dist/types/config/src/validators/index.d.ts.map +0 -1
- package/dist/types/loader/src/index.d.ts.map +0 -1
- package/dist/types/loader/src/loadAppshellComponent.d.ts.map +0 -1
- package/dist/types/loader/src/remoteLoader.d.ts.map +0 -1
- package/dist/types/loader/src/resolvers.d.ts.map +0 -1
- package/dist/types/loader/src/types.d.ts.map +0 -1
- package/src/index.ts +0 -7
- package/src/loadAppshellComponent.ts +0 -66
- package/src/remoteLoader.ts +0 -69
- package/src/resolvers.ts +0 -110
- package/src/types.ts +0 -10
- package/tsconfig.json +0 -7
- package/webpack.config.js +0 -37
package/src/resolvers.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AppshellComposition,
|
|
3
|
-
AppshellGlobalConfig,
|
|
4
|
-
AppshellManifest,
|
|
5
|
-
ResolvedRemote,
|
|
6
|
-
} from '@appshell/config';
|
|
7
|
-
|
|
8
|
-
export type RemoteResolution = {
|
|
9
|
-
remote: ResolvedRemote;
|
|
10
|
-
/** Already merged with the environment's overrides — nothing left for the browser to layer on. */
|
|
11
|
-
environment: Record<string, string | number | undefined>;
|
|
12
|
-
/** Back-compat payload for `ManifestProvider`; synthesized when the source was a composition. */
|
|
13
|
-
manifest: AppshellManifest;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type RemoteResolver = (key: string) => Promise<RemoteResolution | undefined>;
|
|
17
|
-
|
|
18
|
-
const manifestOf = (composition: AppshellComposition, remotes: AppshellManifest['remotes']) => ({
|
|
19
|
-
remotes,
|
|
20
|
-
environment: composition.environment,
|
|
21
|
-
modules: {},
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
/** The registry inlined the composition into the page, so no network call is needed. */
|
|
25
|
-
export const inlineResolver =
|
|
26
|
-
(composition?: AppshellComposition): RemoteResolver =>
|
|
27
|
-
async (key) => {
|
|
28
|
-
const remote = composition?.remotes[key];
|
|
29
|
-
if (!composition || !remote) return undefined;
|
|
30
|
-
|
|
31
|
-
return {
|
|
32
|
-
remote,
|
|
33
|
-
environment: composition.environment[remote.scope] ?? {},
|
|
34
|
-
manifest: manifestOf(composition, composition.remotes),
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/** Fetch-on-miss: covers an app activated after this page was served. */
|
|
39
|
-
export const registryResolver =
|
|
40
|
-
(composition?: AppshellComposition, origin = ''): RemoteResolver =>
|
|
41
|
-
async (key) => {
|
|
42
|
-
if (!composition) return undefined;
|
|
43
|
-
|
|
44
|
-
const url = `${origin}/v1/environments/${composition.environmentId}/remotes/${key}`;
|
|
45
|
-
const response = await fetch(url, { credentials: 'include' });
|
|
46
|
-
if (!response.ok) return undefined;
|
|
47
|
-
|
|
48
|
-
const remote: ResolvedRemote = await response.json();
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
remote,
|
|
52
|
-
environment: composition.environment[remote.scope] ?? {},
|
|
53
|
-
manifest: manifestOf(composition, { [key]: remote }),
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Pre-registry hosts: follow `index[key]` to the app's own manifest. The override
|
|
59
|
-
* merge stays here because in this mode no server has done it.
|
|
60
|
-
*/
|
|
61
|
-
export const legacyManifestResolver = (config: AppshellGlobalConfig): RemoteResolver => {
|
|
62
|
-
const cache = new Map<string, Promise<AppshellManifest>>();
|
|
63
|
-
|
|
64
|
-
const fetchManifest = (url: string) => {
|
|
65
|
-
const cached = cache.get(url);
|
|
66
|
-
if (cached) return cached;
|
|
67
|
-
|
|
68
|
-
const pending = fetch(url, { credentials: 'include' }).then(async (response) => {
|
|
69
|
-
if (!response.ok) {
|
|
70
|
-
throw new Error(`Failed to get manifest from ${url}. ${await response.text()}`);
|
|
71
|
-
}
|
|
72
|
-
return response.json() as Promise<AppshellManifest>;
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
cache.set(url, pending);
|
|
76
|
-
|
|
77
|
-
return pending;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
return async (key) => {
|
|
81
|
-
const manifestUrl = config.index?.[key];
|
|
82
|
-
if (!manifestUrl) return undefined;
|
|
83
|
-
|
|
84
|
-
const manifest = await fetchManifest(manifestUrl);
|
|
85
|
-
const remote = manifest?.remotes[key];
|
|
86
|
-
if (!remote) return undefined;
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
remote,
|
|
90
|
-
environment: {
|
|
91
|
-
...(manifest.environment[remote.scope] ?? {}),
|
|
92
|
-
...(config.overrides?.environment?.[remote.scope] ?? {}),
|
|
93
|
-
},
|
|
94
|
-
manifest,
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
export const chainResolvers =
|
|
100
|
-
(...resolvers: RemoteResolver[]): RemoteResolver =>
|
|
101
|
-
async (key) => {
|
|
102
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
103
|
-
for (const resolve of resolvers) {
|
|
104
|
-
// eslint-disable-next-line no-await-in-loop
|
|
105
|
-
const resolution = await resolve(key);
|
|
106
|
-
if (resolution) return resolution;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return undefined;
|
|
110
|
-
};
|
package/src/types.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2
|
-
export type ShareScope<TComponent = any> = Record<
|
|
3
|
-
string,
|
|
4
|
-
Record<string, { loaded?: 1; get: () => Promise<TComponent>; from: string; eager: boolean }>
|
|
5
|
-
>;
|
|
6
|
-
|
|
7
|
-
export interface ModuleContainer<TComponent> {
|
|
8
|
-
init(shareScope: ShareScope<TComponent>): Promise<void>;
|
|
9
|
-
get(module: string): Promise<() => Record<string, TComponent>>;
|
|
10
|
-
}
|
package/tsconfig.json
DELETED
package/webpack.config.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
|
3
|
-
|
|
4
|
-
module.exports = (env, { mode }) => {
|
|
5
|
-
const isDevelopment = mode === 'development';
|
|
6
|
-
|
|
7
|
-
return {
|
|
8
|
-
entry: './src/index',
|
|
9
|
-
mode,
|
|
10
|
-
devtool: isDevelopment ? 'eval-source-map' : false,
|
|
11
|
-
output: {
|
|
12
|
-
filename: '[name].js',
|
|
13
|
-
pathinfo: false,
|
|
14
|
-
libraryTarget: 'umd',
|
|
15
|
-
},
|
|
16
|
-
resolve: {
|
|
17
|
-
extensions: ['.js', '.ts'],
|
|
18
|
-
plugins: [new TsconfigPathsPlugin()],
|
|
19
|
-
},
|
|
20
|
-
module: {
|
|
21
|
-
rules: [
|
|
22
|
-
{
|
|
23
|
-
test: /\.ts$/,
|
|
24
|
-
exclude: /node_modules/,
|
|
25
|
-
use: [
|
|
26
|
-
{
|
|
27
|
-
loader: 'babel-loader',
|
|
28
|
-
options: {
|
|
29
|
-
presets: ['@babel/preset-typescript'],
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
};
|