@dxos/app-framework 0.9.0 → 0.9.1-staging.ee54ba693a
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/dist/lib/browser/{capability-BOPAKKWG.mjs → capability-S44TE2H7.mjs} +9 -9
- package/dist/lib/browser/{chunk-66IXTIVK.mjs → chunk-3NQLTQCP.mjs} +6 -7
- package/dist/lib/browser/chunk-3NQLTQCP.mjs.map +7 -0
- package/dist/lib/browser/chunk-53HJHMS5.mjs +7 -0
- package/dist/lib/browser/chunk-53HJHMS5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-Y66ELD4U.mjs → chunk-KRJ4KK2W.mjs} +36 -7
- package/dist/lib/browser/chunk-KRJ4KK2W.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KZUDO43J.mjs → chunk-LUH4Y5F2.mjs} +31 -23
- package/dist/lib/browser/chunk-LUH4Y5F2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-CO3XLNUX.mjs → chunk-NKVRSMFN.mjs} +18 -18
- package/dist/lib/browser/chunk-NKVRSMFN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DC3WRPBV.mjs → chunk-OO53M5UK.mjs} +45 -12
- package/dist/lib/browser/chunk-OO53M5UK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-IW44C7UL.mjs → chunk-OPTS3ZSN.mjs} +1 -1
- package/dist/lib/browser/chunk-OPTS3ZSN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-HFLKXMT7.mjs → chunk-U5MESPM5.mjs} +61 -45
- package/dist/lib/browser/chunk-U5MESPM5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XHS5KDNX.mjs → chunk-UGYCLOXE.mjs} +25 -25
- package/dist/lib/browser/chunk-UGYCLOXE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5GY3YOEL.mjs → chunk-VF37YTXJ.mjs} +5 -5
- package/dist/lib/browser/chunk-VF37YTXJ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FO3IYSLV.mjs → chunk-YUVQIOTB.mjs} +29 -37
- package/dist/lib/browser/chunk-YUVQIOTB.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +9 -9
- package/dist/lib/browser/cli/index.mjs.map +2 -2
- package/dist/lib/browser/common/activation-events.mjs +7 -7
- package/dist/lib/browser/common/capabilities.mjs +7 -7
- package/dist/lib/browser/config/index.mjs +8 -0
- package/dist/lib/browser/config/index.mjs.map +7 -0
- package/dist/lib/browser/core/activation-event.mjs +1 -1
- package/dist/lib/browser/core/capability.mjs +1 -1
- package/dist/lib/browser/core/plugin-manager.mjs +4 -4
- package/dist/lib/browser/core/plugin.mjs +12 -2
- package/dist/lib/browser/core/url-loader.mjs +3 -3
- package/dist/lib/browser/index.mjs +14 -10
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{process-manager-capability-GXNUO7AR.mjs → process-manager-capability-QK4BMKMN.mjs} +9 -9
- package/dist/lib/browser/testing/index.mjs +15 -15
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/testing/react.mjs +11 -11
- package/dist/lib/browser/testing/react.mjs.map +3 -3
- package/dist/lib/browser/ui/index.mjs +18 -10
- package/dist/lib/node-esm/{capability-KZWRTX7R.mjs → capability-3YRF77LV.mjs} +9 -9
- package/dist/lib/node-esm/chunk-2UPUZXGU.mjs +9 -0
- package/dist/lib/node-esm/chunk-2UPUZXGU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XIGPWXCQ.mjs → chunk-4SE7SX7N.mjs} +45 -12
- package/dist/lib/node-esm/chunk-4SE7SX7N.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XOCUANHO.mjs → chunk-BMW6P6QA.mjs} +6 -7
- package/dist/lib/node-esm/chunk-BMW6P6QA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-A5CHGAZE.mjs → chunk-DRT75WGD.mjs} +61 -45
- package/dist/lib/node-esm/chunk-DRT75WGD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XGBUKRCK.mjs → chunk-FKMVORZN.mjs} +31 -23
- package/dist/lib/node-esm/chunk-FKMVORZN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CTKEZHKF.mjs → chunk-GLH4LGHZ.mjs} +1 -1
- package/dist/lib/node-esm/chunk-GLH4LGHZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SX5NVETP.mjs → chunk-IL7O7IRX.mjs} +25 -25
- package/dist/lib/node-esm/chunk-IL7O7IRX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FSVGKTF6.mjs → chunk-ND2HETHD.mjs} +36 -7
- package/dist/lib/node-esm/chunk-ND2HETHD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-KFZEB6BV.mjs → chunk-TLKYZKPW.mjs} +5 -5
- package/dist/lib/node-esm/chunk-TLKYZKPW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WK7OIQKI.mjs → chunk-VCPGX7WN.mjs} +29 -37
- package/dist/lib/node-esm/chunk-VCPGX7WN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NULBHQYS.mjs → chunk-XSZMX53L.mjs} +18 -18
- package/dist/lib/node-esm/chunk-XSZMX53L.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +9 -9
- package/dist/lib/node-esm/cli/index.mjs.map +2 -2
- package/dist/lib/node-esm/common/activation-events.mjs +7 -7
- package/dist/lib/node-esm/common/capabilities.mjs +7 -7
- package/dist/lib/node-esm/config/index.mjs +9 -0
- package/dist/lib/node-esm/config/index.mjs.map +7 -0
- package/dist/lib/node-esm/core/activation-event.mjs +1 -1
- package/dist/lib/node-esm/core/capability.mjs +1 -1
- package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
- package/dist/lib/node-esm/core/plugin.mjs +12 -2
- package/dist/lib/node-esm/core/url-loader.mjs +3 -3
- package/dist/lib/node-esm/index.mjs +14 -10
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{process-manager-capability-TX5TA6YN.mjs → process-manager-capability-5S7WZ2JR.mjs} +9 -9
- package/dist/lib/node-esm/testing/index.mjs +15 -15
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/testing/react.mjs +11 -11
- package/dist/lib/node-esm/testing/react.mjs.map +3 -3
- package/dist/lib/node-esm/ui/index.mjs +18 -10
- package/dist/plugin/node-esm/index.mjs +414 -81
- package/dist/plugin/node-esm/index.mjs.map +4 -4
- package/dist/plugin/node-esm/meta.json +1 -1
- package/dist/types/src/cli/cli.d.ts +1 -1
- package/dist/types/src/common/activation-events.d.ts.map +1 -1
- package/dist/types/src/common/capabilities.d.ts +2 -2
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/config/index.d.ts +2 -0
- package/dist/types/src/config/index.d.ts.map +1 -0
- package/dist/types/src/core/activation-event.d.ts +9 -6
- package/dist/types/src/core/activation-event.d.ts.map +1 -1
- package/dist/types/src/core/capability.d.ts +9 -3
- package/dist/types/src/core/capability.d.ts.map +1 -1
- package/dist/types/src/core/edge-registry-plugin-provider.d.ts +6 -11
- package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manifest.d.ts +25 -7
- package/dist/types/src/core/plugin-manifest.d.ts.map +1 -1
- package/dist/types/src/core/plugin.d.ts +89 -91
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/core/registry.d.ts +17 -57
- package/dist/types/src/core/registry.d.ts.map +1 -1
- package/dist/types/src/core/url-loader.d.ts +2 -2
- package/dist/types/src/core/url-loader.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin-process-manager/history/capability.d.ts +1 -3
- package/dist/types/src/plugin-process-manager/history/capability.d.ts.map +1 -1
- package/dist/types/src/plugin-process-manager/meta.d.ts +32 -2
- package/dist/types/src/plugin-process-manager/meta.d.ts.map +1 -1
- package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts +1 -4
- package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts.map +1 -1
- package/dist/types/src/testing/harness.d.ts +1 -1
- package/dist/types/src/testing/harness.d.ts.map +1 -1
- package/dist/types/src/testing/react.d.ts +6 -5
- package/dist/types/src/testing/react.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/App/App.stories.d.ts +2 -2
- package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +6 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +6 -10
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/context.d.ts +6 -2
- package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/index.d.ts +11 -4
- package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/types.d.ts +52 -72
- package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -1
- package/dist/types/src/ui/hooks/useApp.d.ts +1 -1
- package/dist/types/src/ui/hooks/useCapabilities.d.ts +17 -1
- package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/composer/index.d.ts +11 -4
- package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/index.d.ts +1 -0
- package/dist/types/src/vite-plugin/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/load.d.ts +16 -0
- package/dist/types/src/vite-plugin/load.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/manifest.d.ts +16 -4
- package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/packages.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/docs/registry-spec.md +331 -0
- package/moon.yml +1 -0
- package/package.json +50 -39
- package/src/cli/cli.ts +2 -2
- package/src/common/activation-events.ts +3 -3
- package/src/common/capabilities.ts +18 -18
- package/src/config/index.ts +5 -0
- package/src/core/activation-event.ts +15 -8
- package/src/core/capability.ts +18 -6
- package/src/core/edge-registry-plugin-provider.ts +41 -42
- package/src/core/plugin-manager.test.ts +133 -137
- package/src/core/plugin-manager.ts +25 -19
- package/src/core/plugin-manifest.test.ts +5 -5
- package/src/core/plugin-manifest.ts +13 -10
- package/src/core/plugin.ts +58 -114
- package/src/core/registry.ts +20 -60
- package/src/core/url-loader.test.ts +2 -2
- package/src/core/url-loader.ts +23 -19
- package/src/index.ts +1 -0
- package/src/testing/harness.ts +5 -3
- package/src/testing/react.test.tsx +4 -2
- package/src/testing/react.tsx +10 -9
- package/src/testing/service.ts +2 -2
- package/src/testing/withPluginManager.stories.tsx +4 -2
- package/src/testing/withPluginManager.tsx +3 -1
- package/src/ui/components/App/App.stories.tsx +2 -2
- package/src/ui/components/PluginManager/PluginManagerProvider.ts +7 -0
- package/src/ui/components/Surface/SurfaceComponent.stories.tsx +22 -22
- package/src/ui/components/Surface/SurfaceComponent.tsx +90 -79
- package/src/ui/components/Surface/SurfaceProfilerContext.tsx +1 -1
- package/src/ui/components/Surface/context.ts +6 -4
- package/src/ui/components/Surface/index.ts +14 -3
- package/src/ui/components/Surface/types.test.ts +43 -51
- package/src/ui/components/Surface/types.ts +99 -64
- package/src/ui/hooks/useApp.test.tsx +1 -1
- package/src/ui/hooks/useApp.tsx +2 -2
- package/src/ui/hooks/useCapabilities.ts +49 -2
- package/src/vite-plugin/boot-loader/BootLoader.solid-stories.tsx +11 -11
- package/src/vite-plugin/boot-loader/loader.ts +3 -3
- package/src/vite-plugin/composer/index.ts +134 -61
- package/src/vite-plugin/import-map/index.ts +23 -7
- package/src/vite-plugin/index.ts +1 -0
- package/src/vite-plugin/load.ts +57 -0
- package/src/vite-plugin/manifest.test.ts +3 -3
- package/src/vite-plugin/manifest.ts +21 -10
- package/src/vite-plugin/packages.ts +0 -2
- package/tsconfig.json +5 -2
- package/dist/lib/browser/chunk-5GY3YOEL.mjs.map +0 -7
- package/dist/lib/browser/chunk-66IXTIVK.mjs.map +0 -7
- package/dist/lib/browser/chunk-CO3XLNUX.mjs.map +0 -7
- package/dist/lib/browser/chunk-DC3WRPBV.mjs.map +0 -7
- package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +0 -7
- package/dist/lib/browser/chunk-HFLKXMT7.mjs.map +0 -7
- package/dist/lib/browser/chunk-IW44C7UL.mjs.map +0 -7
- package/dist/lib/browser/chunk-KZUDO43J.mjs.map +0 -7
- package/dist/lib/browser/chunk-XHS5KDNX.mjs.map +0 -7
- package/dist/lib/browser/chunk-Y66ELD4U.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-A5CHGAZE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CTKEZHKF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FSVGKTF6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KFZEB6BV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NULBHQYS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SX5NVETP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XGBUKRCK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XIGPWXCQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +0 -7
- /package/dist/lib/browser/{capability-BOPAKKWG.mjs.map → capability-S44TE2H7.mjs.map} +0 -0
- /package/dist/lib/browser/{process-manager-capability-GXNUO7AR.mjs.map → process-manager-capability-QK4BMKMN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{capability-KZWRTX7R.mjs.map → capability-3YRF77LV.mjs.map} +0 -0
- /package/dist/lib/node-esm/{process-manager-capability-TX5TA6YN.mjs.map → process-manager-capability-5S7WZ2JR.mjs.map} +0 -0
|
@@ -60,7 +60,7 @@ const atomCounter = (registry: Registry.Registry, atom: Atom.Atom<any>) => {
|
|
|
60
60
|
describe('PluginManager', () => {
|
|
61
61
|
let plugins: Plugin.Plugin[] = [];
|
|
62
62
|
const pluginLoader = Effect.fn(function* (id: string) {
|
|
63
|
-
const plugin = plugins.find((plugin) => plugin.meta.
|
|
63
|
+
const plugin = plugins.find((plugin) => plugin.meta.profile.key === id);
|
|
64
64
|
invariant(plugin, `Plugin not found: ${id}`);
|
|
65
65
|
return { plugin };
|
|
66
66
|
});
|
|
@@ -76,17 +76,17 @@ describe('PluginManager', () => {
|
|
|
76
76
|
plugins = [testPlugin];
|
|
77
77
|
|
|
78
78
|
const manager = PluginManager.make({ pluginLoader });
|
|
79
|
-
const added = yield* manager.add(testMeta.
|
|
79
|
+
const added = yield* manager.add(testMeta.profile.key);
|
|
80
80
|
assert.strictEqual(added, testPlugin);
|
|
81
81
|
assert.deepStrictEqual(manager.getPlugins(), [testPlugin]);
|
|
82
82
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
83
|
-
const removed = yield* manager.remove(testMeta.
|
|
83
|
+
const removed = yield* manager.remove(testMeta.profile.key);
|
|
84
84
|
assert.isTrue(removed);
|
|
85
85
|
assert.deepStrictEqual(manager.getPlugins(), []);
|
|
86
86
|
}),
|
|
87
87
|
);
|
|
88
88
|
|
|
89
|
-
it.effect('should add plugin when locator differs from meta.
|
|
89
|
+
it.effect('should add plugin when locator differs from meta.profile.key', () =>
|
|
90
90
|
Effect.gen(function* () {
|
|
91
91
|
const Test = Plugin.make(Plugin.define(testMeta));
|
|
92
92
|
const testPlugin = Test();
|
|
@@ -104,8 +104,8 @@ describe('PluginManager', () => {
|
|
|
104
104
|
assert.strictEqual(added, testPlugin);
|
|
105
105
|
assert.deepStrictEqual(manager.getPlugins(), [testPlugin]);
|
|
106
106
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
107
|
-
yield* manager.enable(added.meta.
|
|
108
|
-
assert.deepStrictEqual(manager.getEnabled(), [testMeta.
|
|
107
|
+
yield* manager.enable(added.meta.profile.key);
|
|
108
|
+
assert.deepStrictEqual(manager.getEnabled(), [testMeta.profile.key]);
|
|
109
109
|
}),
|
|
110
110
|
);
|
|
111
111
|
|
|
@@ -142,7 +142,7 @@ describe('PluginManager', () => {
|
|
|
142
142
|
|
|
143
143
|
const manager = PluginManager.make({ pluginLoader: loader });
|
|
144
144
|
yield* manager.add('prod');
|
|
145
|
-
yield* manager.enable(testMeta.
|
|
145
|
+
yield* manager.enable(testMeta.profile.key);
|
|
146
146
|
yield* manager.activate(ActivationEvents.Startup);
|
|
147
147
|
assert.deepStrictEqual(
|
|
148
148
|
manager.capabilities.getAll(String).map((value) => value.string),
|
|
@@ -151,9 +151,9 @@ describe('PluginManager', () => {
|
|
|
151
151
|
|
|
152
152
|
// Loading the dev plugin with the same id swaps it into the id slot.
|
|
153
153
|
yield* manager.add('dev');
|
|
154
|
-
yield* manager.enable(testMeta.
|
|
154
|
+
yield* manager.enable(testMeta.profile.key);
|
|
155
155
|
assert.strictEqual(
|
|
156
|
-
manager.getPlugins().find((plugin) => plugin.meta.
|
|
156
|
+
manager.getPlugins().find((plugin) => plugin.meta.profile.key === testMeta.profile.key),
|
|
157
157
|
devPlugin,
|
|
158
158
|
);
|
|
159
159
|
yield* manager.reset(ActivationEvents.Startup);
|
|
@@ -164,12 +164,12 @@ describe('PluginManager', () => {
|
|
|
164
164
|
|
|
165
165
|
// Removing the dev plugin restores the original and re-enables it
|
|
166
166
|
// because it was enabled at shadow time.
|
|
167
|
-
yield* manager.remove(testMeta.
|
|
167
|
+
yield* manager.remove(testMeta.profile.key);
|
|
168
168
|
assert.strictEqual(
|
|
169
|
-
manager.getPlugins().find((plugin) => plugin.meta.
|
|
169
|
+
manager.getPlugins().find((plugin) => plugin.meta.profile.key === testMeta.profile.key),
|
|
170
170
|
productionPlugin,
|
|
171
171
|
);
|
|
172
|
-
assert.isTrue(manager.getEnabled().includes(testMeta.
|
|
172
|
+
assert.isTrue(manager.getEnabled().includes(testMeta.profile.key));
|
|
173
173
|
yield* manager.reset(ActivationEvents.Startup);
|
|
174
174
|
assert.deepStrictEqual(
|
|
175
175
|
manager.capabilities.getAll(String).map((value) => value.string),
|
|
@@ -198,11 +198,11 @@ describe('PluginManager', () => {
|
|
|
198
198
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
199
199
|
|
|
200
200
|
yield* manager.add('dev');
|
|
201
|
-
yield* manager.remove(testMeta.
|
|
201
|
+
yield* manager.remove(testMeta.profile.key);
|
|
202
202
|
|
|
203
203
|
// Original is restored but stays disabled, matching its pre-shadow state.
|
|
204
204
|
assert.strictEqual(
|
|
205
|
-
manager.getPlugins().find((plugin) => plugin.meta.
|
|
205
|
+
manager.getPlugins().find((plugin) => plugin.meta.profile.key === testMeta.profile.key),
|
|
206
206
|
productionPlugin,
|
|
207
207
|
);
|
|
208
208
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
@@ -230,7 +230,7 @@ describe('PluginManager', () => {
|
|
|
230
230
|
plugins = [plugin];
|
|
231
231
|
|
|
232
232
|
const manager = PluginManager.make({ plugins: [plugin], pluginLoader });
|
|
233
|
-
yield* manager.enable(testMeta.
|
|
233
|
+
yield* manager.enable(testMeta.profile.key);
|
|
234
234
|
yield* manager.activate(ActivationEvents.Startup);
|
|
235
235
|
const strings = manager.capabilities.getAll(String);
|
|
236
236
|
assert.strictEqual(strings.length, 2);
|
|
@@ -252,10 +252,10 @@ describe('PluginManager', () => {
|
|
|
252
252
|
|
|
253
253
|
const testPlugin = Test();
|
|
254
254
|
const manager = PluginManager.make({ plugins: [testPlugin], pluginLoader });
|
|
255
|
-
yield* manager.enable(testMeta.
|
|
256
|
-
assert.deepStrictEqual(manager.getEnabled(), [Test.meta.
|
|
255
|
+
yield* manager.enable(testMeta.profile.key);
|
|
256
|
+
assert.deepStrictEqual(manager.getEnabled(), [Test.meta.profile.key]);
|
|
257
257
|
assert.deepStrictEqual(manager.getModules(), [testPlugin.modules[0]]);
|
|
258
|
-
yield* manager.disable(testMeta.
|
|
258
|
+
yield* manager.disable(testMeta.profile.key);
|
|
259
259
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
260
260
|
assert.deepStrictEqual(manager.getModules(), []);
|
|
261
261
|
}),
|
|
@@ -274,9 +274,9 @@ describe('PluginManager', () => {
|
|
|
274
274
|
|
|
275
275
|
const testPlugin = Test();
|
|
276
276
|
const manager = PluginManager.make({ plugins: [testPlugin], pluginLoader });
|
|
277
|
-
yield* manager.enable(Test.meta.
|
|
277
|
+
yield* manager.enable(Test.meta.profile.key);
|
|
278
278
|
assert.deepStrictEqual(manager.getPlugins(), [testPlugin]);
|
|
279
|
-
assert.deepStrictEqual(manager.getEnabled(), [Test.meta.
|
|
279
|
+
assert.deepStrictEqual(manager.getEnabled(), [Test.meta.profile.key]);
|
|
280
280
|
assert.deepStrictEqual(manager.getModules(), [testPlugin.modules[0]]);
|
|
281
281
|
assert.deepStrictEqual(manager.getActive(), []);
|
|
282
282
|
assert.deepStrictEqual(manager.getEventsFired(), []);
|
|
@@ -299,7 +299,7 @@ describe('PluginManager', () => {
|
|
|
299
299
|
|
|
300
300
|
const testPlugin = Test();
|
|
301
301
|
const manager = PluginManager.make({ plugins: [testPlugin], pluginLoader });
|
|
302
|
-
yield* manager.enable(Test.meta.
|
|
302
|
+
yield* manager.enable(Test.meta.profile.key);
|
|
303
303
|
|
|
304
304
|
const result = yield* manager.activate(ActivationEvents.Startup);
|
|
305
305
|
assert.isTrue(result);
|
|
@@ -322,8 +322,8 @@ describe('PluginManager', () => {
|
|
|
322
322
|
];
|
|
323
323
|
|
|
324
324
|
const manager = PluginManager.make({ pluginLoader });
|
|
325
|
-
yield* manager.add(testMeta.
|
|
326
|
-
yield* manager.enable(testMeta.
|
|
325
|
+
yield* manager.add(testMeta.profile.key);
|
|
326
|
+
yield* manager.enable(testMeta.profile.key);
|
|
327
327
|
const error = yield* Effect.flip(manager.activate(FailEvent));
|
|
328
328
|
assert.strictEqual(error.message, 'test');
|
|
329
329
|
}),
|
|
@@ -355,8 +355,8 @@ describe('PluginManager', () => {
|
|
|
355
355
|
];
|
|
356
356
|
|
|
357
357
|
const manager = PluginManager.make({ pluginLoader });
|
|
358
|
-
yield* manager.add(testMeta.
|
|
359
|
-
yield* manager.enable(testMeta.
|
|
358
|
+
yield* manager.add(testMeta.profile.key);
|
|
359
|
+
yield* manager.enable(testMeta.profile.key);
|
|
360
360
|
const error = yield* Effect.flip(manager.activate(DefectEvent));
|
|
361
361
|
|
|
362
362
|
// Verify the error was caught and propagated.
|
|
@@ -377,7 +377,7 @@ describe('PluginManager', () => {
|
|
|
377
377
|
|
|
378
378
|
it.effect('should catch and log defects when activate throws before returning Effect', () =>
|
|
379
379
|
Effect.gen(function* () {
|
|
380
|
-
const DefectEvent = ActivationEvent.make('org.dxos.test.
|
|
380
|
+
const DefectEvent = ActivationEvent.make('org.dxos.test.defectImmediate');
|
|
381
381
|
const capturedErrors: LogEntry[] = [];
|
|
382
382
|
const removeProcessor = log.addProcessor((_config: LogConfig, entry: LogEntry) => {
|
|
383
383
|
if (entry.level === LogLevel.ERROR) {
|
|
@@ -402,8 +402,8 @@ describe('PluginManager', () => {
|
|
|
402
402
|
];
|
|
403
403
|
|
|
404
404
|
const manager = PluginManager.make({ pluginLoader });
|
|
405
|
-
yield* manager.add(testMeta.
|
|
406
|
-
yield* manager.enable(testMeta.
|
|
405
|
+
yield* manager.add(testMeta.profile.key);
|
|
406
|
+
yield* manager.enable(testMeta.profile.key);
|
|
407
407
|
const error = yield* Effect.flip(manager.activate(DefectEvent));
|
|
408
408
|
|
|
409
409
|
// Verify the error was caught and propagated.
|
|
@@ -467,8 +467,8 @@ describe('PluginManager', () => {
|
|
|
467
467
|
Effect.runFork,
|
|
468
468
|
);
|
|
469
469
|
|
|
470
|
-
yield* manager.add(testMeta.
|
|
471
|
-
yield* manager.enable(testMeta.
|
|
470
|
+
yield* manager.add(testMeta.profile.key);
|
|
471
|
+
yield* manager.enable(testMeta.profile.key);
|
|
472
472
|
yield* manager.activate(ActivationEvents.Startup);
|
|
473
473
|
yield* activating.await;
|
|
474
474
|
yield* activated.await;
|
|
@@ -518,8 +518,8 @@ describe('PluginManager', () => {
|
|
|
518
518
|
const manager = PluginManager.make({ pluginLoader });
|
|
519
519
|
|
|
520
520
|
{
|
|
521
|
-
yield* manager.add(testMeta.
|
|
522
|
-
yield* manager.enable(testMeta.
|
|
521
|
+
yield* manager.add(testMeta.profile.key);
|
|
522
|
+
yield* manager.enable(testMeta.profile.key);
|
|
523
523
|
const result = yield* manager.activate(ActivationEvents.Startup);
|
|
524
524
|
assert.isTrue(result);
|
|
525
525
|
assert.deepStrictEqual(manager.getActive(), [testPlugin.modules[0].id]);
|
|
@@ -542,7 +542,7 @@ describe('PluginManager', () => {
|
|
|
542
542
|
it.effect('should not fire an unknown event', () =>
|
|
543
543
|
Effect.gen(function* () {
|
|
544
544
|
const manager = PluginManager.make({ pluginLoader });
|
|
545
|
-
const UnknownEvent = ActivationEvent.make('unknown');
|
|
545
|
+
const UnknownEvent = ActivationEvent.make('org.dxos.test.unknown');
|
|
546
546
|
const result = yield* manager.activate(UnknownEvent);
|
|
547
547
|
assert.isFalse(result);
|
|
548
548
|
}),
|
|
@@ -583,20 +583,20 @@ describe('PluginManager', () => {
|
|
|
583
583
|
assert.deepStrictEqual(manager.getActive(), []);
|
|
584
584
|
assert.strictEqual(manager.capabilities.getAll(Number).length, 0);
|
|
585
585
|
|
|
586
|
-
yield* manager.add(Plugin1.meta.
|
|
587
|
-
yield* manager.enable(Plugin1.meta.
|
|
586
|
+
yield* manager.add(Plugin1.meta.profile.key);
|
|
587
|
+
yield* manager.enable(Plugin1.meta.profile.key);
|
|
588
588
|
yield* manager.activate(CountEvent);
|
|
589
589
|
assert.deepStrictEqual(manager.getActive(), [plugin1.modules[0].id]);
|
|
590
590
|
assert.strictEqual(manager.capabilities.getAll(Number).length, 1);
|
|
591
591
|
|
|
592
|
-
yield* manager.add(Plugin2.meta.
|
|
593
|
-
yield* manager.enable(Plugin2.meta.
|
|
592
|
+
yield* manager.add(Plugin2.meta.profile.key);
|
|
593
|
+
yield* manager.enable(Plugin2.meta.profile.key);
|
|
594
594
|
yield* manager.activate(CountEvent);
|
|
595
595
|
assert.deepStrictEqual(manager.getActive(), [plugin1.modules[0].id, plugin2.modules[0].id]);
|
|
596
596
|
assert.strictEqual(manager.capabilities.getAll(Number).length, 2);
|
|
597
597
|
|
|
598
|
-
yield* manager.add(Plugin3.meta.
|
|
599
|
-
yield* manager.enable(Plugin3.meta.
|
|
598
|
+
yield* manager.add(Plugin3.meta.profile.key);
|
|
599
|
+
yield* manager.enable(Plugin3.meta.profile.key);
|
|
600
600
|
yield* manager.activate(CountEvent);
|
|
601
601
|
assert.deepStrictEqual(manager.getActive(), [
|
|
602
602
|
plugin1.modules[0].id,
|
|
@@ -626,8 +626,8 @@ describe('PluginManager', () => {
|
|
|
626
626
|
assert.deepStrictEqual(manager.getActive(), []);
|
|
627
627
|
assert.strictEqual(manager.capabilities.getAll(String).length, 0);
|
|
628
628
|
|
|
629
|
-
yield* manager.add(testMeta.
|
|
630
|
-
yield* manager.enable(testMeta.
|
|
629
|
+
yield* manager.add(testMeta.profile.key);
|
|
630
|
+
yield* manager.enable(testMeta.profile.key);
|
|
631
631
|
yield* manager.activate(ActivationEvents.Startup);
|
|
632
632
|
assert.deepStrictEqual(manager.getActive(), []);
|
|
633
633
|
assert.strictEqual(manager.capabilities.getAll(String).length, 0);
|
|
@@ -660,8 +660,8 @@ describe('PluginManager', () => {
|
|
|
660
660
|
assert.strictEqual(manager.capabilities.getAll(String).length, 0);
|
|
661
661
|
assert.strictEqual(count, 0);
|
|
662
662
|
|
|
663
|
-
yield* manager.add(testMeta.
|
|
664
|
-
yield* manager.enable(testMeta.
|
|
663
|
+
yield* manager.add(testMeta.profile.key);
|
|
664
|
+
yield* manager.enable(testMeta.profile.key);
|
|
665
665
|
yield* manager.activate(CountEvent);
|
|
666
666
|
assert.deepStrictEqual(manager.getActive(), [testPlugin.modules[0].id]);
|
|
667
667
|
assert.strictEqual(manager.capabilities.getAll(String).length, 1);
|
|
@@ -720,10 +720,10 @@ describe('PluginManager', () => {
|
|
|
720
720
|
|
|
721
721
|
const manager = PluginManager.make({ pluginLoader });
|
|
722
722
|
{
|
|
723
|
-
yield* manager.add(Test.meta.
|
|
724
|
-
yield* manager.enable(Test.meta.
|
|
725
|
-
yield* manager.add(Count.meta.
|
|
726
|
-
yield* manager.enable(Count.meta.
|
|
723
|
+
yield* manager.add(Test.meta.profile.key);
|
|
724
|
+
yield* manager.enable(Test.meta.profile.key);
|
|
725
|
+
yield* manager.add(Count.meta.profile.key);
|
|
726
|
+
yield* manager.enable(Count.meta.profile.key);
|
|
727
727
|
yield* manager.activate(ActivationEvents.Startup);
|
|
728
728
|
assert.deepStrictEqual(manager.getActive(), [
|
|
729
729
|
...testPlugin.modules.map((m) => m.id),
|
|
@@ -737,7 +737,7 @@ describe('PluginManager', () => {
|
|
|
737
737
|
}
|
|
738
738
|
|
|
739
739
|
{
|
|
740
|
-
yield* manager.disable(Test.meta.
|
|
740
|
+
yield* manager.disable(Test.meta.profile.key);
|
|
741
741
|
assert.deepStrictEqual(manager.getActive(), [countPlugin.modules[0].id]);
|
|
742
742
|
assert.deepStrictEqual(manager.getPendingReset(), []);
|
|
743
743
|
|
|
@@ -748,7 +748,7 @@ describe('PluginManager', () => {
|
|
|
748
748
|
}
|
|
749
749
|
|
|
750
750
|
{
|
|
751
|
-
yield* manager.enable(Test.meta.
|
|
751
|
+
yield* manager.enable(Test.meta.profile.key);
|
|
752
752
|
assert.deepStrictEqual(manager.getActive(), [
|
|
753
753
|
countPlugin.modules[0].id,
|
|
754
754
|
...testPlugin.modules.map((m) => m.id),
|
|
@@ -805,8 +805,8 @@ describe('PluginManager', () => {
|
|
|
805
805
|
assert.strictEqual(eventsFiredUpdates.count, 0);
|
|
806
806
|
assert.strictEqual(pendingResetUpdates.count, 0);
|
|
807
807
|
|
|
808
|
-
yield* manager.add(Plugin1.meta.
|
|
809
|
-
yield* manager.enable(Plugin1.meta.
|
|
808
|
+
yield* manager.add(Plugin1.meta.profile.key);
|
|
809
|
+
yield* manager.enable(Plugin1.meta.profile.key);
|
|
810
810
|
assert.strictEqual(pluginUpdates.count, 1);
|
|
811
811
|
assert.strictEqual(enabledUpdates.count, 1);
|
|
812
812
|
assert.strictEqual(modulesUpdates.count, 1);
|
|
@@ -822,8 +822,8 @@ describe('PluginManager', () => {
|
|
|
822
822
|
assert.strictEqual(eventsFiredUpdates.count, 1);
|
|
823
823
|
assert.strictEqual(pendingResetUpdates.count, 0);
|
|
824
824
|
|
|
825
|
-
yield* manager.add(Plugin2.meta.
|
|
826
|
-
yield* manager.enable(Plugin2.meta.
|
|
825
|
+
yield* manager.add(Plugin2.meta.profile.key);
|
|
826
|
+
yield* manager.enable(Plugin2.meta.profile.key);
|
|
827
827
|
assert.strictEqual(pluginUpdates.count, 2);
|
|
828
828
|
assert.strictEqual(enabledUpdates.count, 2);
|
|
829
829
|
assert.strictEqual(modulesUpdates.count, 2);
|
|
@@ -839,8 +839,8 @@ describe('PluginManager', () => {
|
|
|
839
839
|
assert.strictEqual(eventsFiredUpdates.count, 1);
|
|
840
840
|
assert.strictEqual(pendingResetUpdates.count, 2);
|
|
841
841
|
|
|
842
|
-
yield* manager.add(Plugin3.meta.
|
|
843
|
-
yield* manager.enable(Plugin3.meta.
|
|
842
|
+
yield* manager.add(Plugin3.meta.profile.key);
|
|
843
|
+
yield* manager.enable(Plugin3.meta.profile.key);
|
|
844
844
|
assert.strictEqual(pluginUpdates.count, 3);
|
|
845
845
|
assert.strictEqual(enabledUpdates.count, 3);
|
|
846
846
|
assert.strictEqual(modulesUpdates.count, 3);
|
|
@@ -857,7 +857,7 @@ describe('PluginManager', () => {
|
|
|
857
857
|
assert.strictEqual(eventsFiredUpdates.count, 1);
|
|
858
858
|
assert.strictEqual(pendingResetUpdates.count, 4);
|
|
859
859
|
|
|
860
|
-
yield* manager.disable(Plugin1.meta.
|
|
860
|
+
yield* manager.disable(Plugin1.meta.profile.key);
|
|
861
861
|
assert.strictEqual(pluginUpdates.count, 3);
|
|
862
862
|
assert.strictEqual(enabledUpdates.count, 4);
|
|
863
863
|
assert.strictEqual(modulesUpdates.count, 4);
|
|
@@ -865,7 +865,7 @@ describe('PluginManager', () => {
|
|
|
865
865
|
assert.strictEqual(eventsFiredUpdates.count, 1);
|
|
866
866
|
assert.strictEqual(pendingResetUpdates.count, 4);
|
|
867
867
|
|
|
868
|
-
yield* manager.remove(Plugin1.meta.
|
|
868
|
+
yield* manager.remove(Plugin1.meta.profile.key);
|
|
869
869
|
assert.strictEqual(pluginUpdates.count, 4);
|
|
870
870
|
assert.strictEqual(enabledUpdates.count, 4);
|
|
871
871
|
assert.strictEqual(modulesUpdates.count, 4);
|
|
@@ -913,8 +913,8 @@ describe('PluginManager', () => {
|
|
|
913
913
|
plugins = [slowPlugin];
|
|
914
914
|
|
|
915
915
|
const manager = PluginManager.make({ pluginLoader });
|
|
916
|
-
yield* manager.add(SlowPlugin.meta.
|
|
917
|
-
yield* manager.enable(SlowPlugin.meta.
|
|
916
|
+
yield* manager.add(SlowPlugin.meta.profile.key);
|
|
917
|
+
yield* manager.enable(SlowPlugin.meta.profile.key);
|
|
918
918
|
|
|
919
919
|
// Fork the activation so we can control time with TestClock.
|
|
920
920
|
const activationFiber = yield* Effect.fork(manager.activate(SlowEvent));
|
|
@@ -939,8 +939,8 @@ describe('PluginManager', () => {
|
|
|
939
939
|
it.effect('should prevent concurrent loads of the same module via semaphore', () =>
|
|
940
940
|
Effect.gen(function* () {
|
|
941
941
|
// Two different events that both can trigger the same module.
|
|
942
|
-
const EventA = ActivationEvent.make('org.dxos.test.
|
|
943
|
-
const EventB = ActivationEvent.make('org.dxos.test.
|
|
942
|
+
const EventA = ActivationEvent.make('org.dxos.test.eventA');
|
|
943
|
+
const EventB = ActivationEvent.make('org.dxos.test.eventB');
|
|
944
944
|
|
|
945
945
|
let activateCallCount = 0;
|
|
946
946
|
const ConcurrentPlugin = Plugin.define(
|
|
@@ -967,8 +967,8 @@ describe('PluginManager', () => {
|
|
|
967
967
|
plugins = [concurrentPlugin];
|
|
968
968
|
|
|
969
969
|
const manager = PluginManager.make({ pluginLoader });
|
|
970
|
-
yield* manager.add(ConcurrentPlugin.meta.
|
|
971
|
-
yield* manager.enable(ConcurrentPlugin.meta.
|
|
970
|
+
yield* manager.add(ConcurrentPlugin.meta.profile.key);
|
|
971
|
+
yield* manager.enable(ConcurrentPlugin.meta.profile.key);
|
|
972
972
|
|
|
973
973
|
// Fork two concurrent activations with DIFFERENT events.
|
|
974
974
|
// Both events trigger the same module, so both will try to call _loadModule.
|
|
@@ -1016,10 +1016,10 @@ describe('PluginManager', () => {
|
|
|
1016
1016
|
plugins = [plugin1, plugin2];
|
|
1017
1017
|
|
|
1018
1018
|
const manager = PluginManager.make({ pluginLoader });
|
|
1019
|
-
yield* manager.add(Plugin1.meta.
|
|
1020
|
-
yield* manager.enable(Plugin1.meta.
|
|
1021
|
-
yield* manager.add(Plugin2.meta.
|
|
1022
|
-
yield* manager.enable(Plugin2.meta.
|
|
1019
|
+
yield* manager.add(Plugin1.meta.profile.key);
|
|
1020
|
+
yield* manager.enable(Plugin1.meta.profile.key);
|
|
1021
|
+
yield* manager.add(Plugin2.meta.profile.key);
|
|
1022
|
+
yield* manager.enable(Plugin2.meta.profile.key);
|
|
1023
1023
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1024
1024
|
assert.strictEqual(manager.getActive().length, 2);
|
|
1025
1025
|
assert.strictEqual(manager.capabilities.getAll(String).length, 1);
|
|
@@ -1055,8 +1055,8 @@ describe('PluginManager', () => {
|
|
|
1055
1055
|
plugins = [testPlugin];
|
|
1056
1056
|
|
|
1057
1057
|
const manager = PluginManager.make({ pluginLoader });
|
|
1058
|
-
yield* manager.add(testMeta.
|
|
1059
|
-
yield* manager.enable(testMeta.
|
|
1058
|
+
yield* manager.add(testMeta.profile.key);
|
|
1059
|
+
yield* manager.enable(testMeta.profile.key);
|
|
1060
1060
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1061
1061
|
assert.isFalse(deactivated);
|
|
1062
1062
|
|
|
@@ -1101,10 +1101,10 @@ describe('PluginManager', () => {
|
|
|
1101
1101
|
plugins = [Plugin1(), Plugin2()];
|
|
1102
1102
|
|
|
1103
1103
|
const manager = PluginManager.make({ pluginLoader });
|
|
1104
|
-
yield* manager.add(Plugin1.meta.
|
|
1105
|
-
yield* manager.enable(Plugin1.meta.
|
|
1106
|
-
yield* manager.add(Plugin2.meta.
|
|
1107
|
-
yield* manager.enable(Plugin2.meta.
|
|
1104
|
+
yield* manager.add(Plugin1.meta.profile.key);
|
|
1105
|
+
yield* manager.enable(Plugin1.meta.profile.key);
|
|
1106
|
+
yield* manager.add(Plugin2.meta.profile.key);
|
|
1107
|
+
yield* manager.enable(Plugin2.meta.profile.key);
|
|
1108
1108
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1109
1109
|
|
|
1110
1110
|
yield* manager.shutdown();
|
|
@@ -1126,8 +1126,8 @@ describe('PluginManager', () => {
|
|
|
1126
1126
|
plugins = [testPlugin];
|
|
1127
1127
|
|
|
1128
1128
|
const manager = PluginManager.make({ pluginLoader });
|
|
1129
|
-
yield* manager.add(testMeta.
|
|
1130
|
-
yield* manager.enable(testMeta.
|
|
1129
|
+
yield* manager.add(testMeta.profile.key);
|
|
1130
|
+
yield* manager.enable(testMeta.profile.key);
|
|
1131
1131
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1132
1132
|
assert.isTrue(manager.getEventsFired().length > 0);
|
|
1133
1133
|
|
|
@@ -1159,8 +1159,8 @@ describe('PluginManager', () => {
|
|
|
1159
1159
|
plugins = [testPlugin];
|
|
1160
1160
|
|
|
1161
1161
|
const manager = PluginManager.make({ pluginLoader });
|
|
1162
|
-
yield* manager.add(testMeta.
|
|
1163
|
-
yield* manager.enable(testMeta.
|
|
1162
|
+
yield* manager.add(testMeta.profile.key);
|
|
1163
|
+
yield* manager.enable(testMeta.profile.key);
|
|
1164
1164
|
|
|
1165
1165
|
const activationFiber = yield* Effect.fork(manager.activate(ActivationEvents.Startup));
|
|
1166
1166
|
yield* activationStarted.await;
|
|
@@ -1196,8 +1196,8 @@ describe('PluginManager', () => {
|
|
|
1196
1196
|
plugins = [testPlugin];
|
|
1197
1197
|
|
|
1198
1198
|
const manager = PluginManager.make({ pluginLoader });
|
|
1199
|
-
yield* manager.add(testMeta.
|
|
1200
|
-
yield* manager.enable(testMeta.
|
|
1199
|
+
yield* manager.add(testMeta.profile.key);
|
|
1200
|
+
yield* manager.enable(testMeta.profile.key);
|
|
1201
1201
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1202
1202
|
|
|
1203
1203
|
const pluginsBefore = manager.getPlugins();
|
|
@@ -1232,8 +1232,8 @@ describe('PluginManager', () => {
|
|
|
1232
1232
|
plugins = [testPlugin];
|
|
1233
1233
|
|
|
1234
1234
|
const manager = PluginManager.make({ pluginLoader });
|
|
1235
|
-
yield* manager.add(testMeta.
|
|
1236
|
-
yield* manager.enable(testMeta.
|
|
1235
|
+
yield* manager.add(testMeta.profile.key);
|
|
1236
|
+
yield* manager.enable(testMeta.profile.key);
|
|
1237
1237
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1238
1238
|
assert.strictEqual(activateCount, 1);
|
|
1239
1239
|
assert.deepStrictEqual(manager.getActive(), [testPlugin.modules[0].id]);
|
|
@@ -1259,12 +1259,12 @@ describe('PluginManager', () => {
|
|
|
1259
1259
|
return Promise.resolve({ default: Real });
|
|
1260
1260
|
});
|
|
1261
1261
|
|
|
1262
|
-
assert.strictEqual(LazyTest.meta.
|
|
1263
|
-
assert.strictEqual(LazyTest.meta.name, 'Lazy');
|
|
1262
|
+
assert.strictEqual(LazyTest.meta.profile.key, lazyMeta.profile.key);
|
|
1263
|
+
assert.strictEqual(LazyTest.meta.profile.name, 'Lazy');
|
|
1264
1264
|
assert.strictEqual(loaderCalls, 0);
|
|
1265
1265
|
|
|
1266
1266
|
const stub = LazyTest();
|
|
1267
|
-
assert.strictEqual(stub.meta.
|
|
1267
|
+
assert.strictEqual(stub.meta.profile.key, lazyMeta.profile.key);
|
|
1268
1268
|
assert.deepStrictEqual([...stub.modules], []);
|
|
1269
1269
|
assert.isTrue(Plugin.isLazy(stub));
|
|
1270
1270
|
assert.strictEqual(loaderCalls, 0);
|
|
@@ -1290,16 +1290,16 @@ describe('PluginManager', () => {
|
|
|
1290
1290
|
plugins = [lazyStub];
|
|
1291
1291
|
|
|
1292
1292
|
const manager = PluginManager.make({ pluginLoader });
|
|
1293
|
-
yield* manager.add(lazyMeta.
|
|
1293
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1294
1294
|
// Loader has not been invoked yet — only meta is exposed.
|
|
1295
1295
|
assert.strictEqual(loaderCalls, 0);
|
|
1296
1296
|
assert.deepStrictEqual(manager.getModules(), []);
|
|
1297
1297
|
|
|
1298
|
-
yield* manager.enable(lazyMeta.
|
|
1298
|
+
yield* manager.enable(lazyMeta.profile.key);
|
|
1299
1299
|
assert.strictEqual(loaderCalls, 1);
|
|
1300
1300
|
// After enable the registered plugin should be the real one (not the stub),
|
|
1301
1301
|
// and its modules should be registered with the manager.
|
|
1302
|
-
const registered = manager.getPlugins().find((p) => p.meta.
|
|
1302
|
+
const registered = manager.getPlugins().find((p) => p.meta.profile.key === lazyMeta.profile.key);
|
|
1303
1303
|
assert.isDefined(registered);
|
|
1304
1304
|
assert.isFalse(Plugin.isLazy(registered!));
|
|
1305
1305
|
assert.strictEqual(registered!.modules.length, 1);
|
|
@@ -1321,7 +1321,7 @@ describe('PluginManager', () => {
|
|
|
1321
1321
|
plugins = [lazyStub];
|
|
1322
1322
|
|
|
1323
1323
|
const manager = PluginManager.make({ pluginLoader });
|
|
1324
|
-
yield* manager.add(lazyMeta.
|
|
1324
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1325
1325
|
|
|
1326
1326
|
// Activate an event that has no listeners — the lazy plugin must not load.
|
|
1327
1327
|
yield* manager.activate(ActivationEvents.Startup);
|
|
@@ -1349,8 +1349,8 @@ describe('PluginManager', () => {
|
|
|
1349
1349
|
plugins = [lazyStub];
|
|
1350
1350
|
|
|
1351
1351
|
const manager = PluginManager.make({ pluginLoader });
|
|
1352
|
-
yield* manager.add(lazyMeta.
|
|
1353
|
-
yield* manager.enable(lazyMeta.
|
|
1352
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1353
|
+
yield* manager.enable(lazyMeta.profile.key);
|
|
1354
1354
|
yield* manager.activate(ActivationEvents.Startup);
|
|
1355
1355
|
|
|
1356
1356
|
const all = manager.capabilities.getAll(String);
|
|
@@ -1368,16 +1368,16 @@ describe('PluginManager', () => {
|
|
|
1368
1368
|
plugins = [lazyStub];
|
|
1369
1369
|
|
|
1370
1370
|
const manager = PluginManager.make({ pluginLoader });
|
|
1371
|
-
yield* manager.add(lazyMeta.
|
|
1371
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1372
1372
|
|
|
1373
|
-
const exit = yield* Effect.exit(manager.enable(lazyMeta.
|
|
1373
|
+
const exit = yield* Effect.exit(manager.enable(lazyMeta.profile.key));
|
|
1374
1374
|
assert.isTrue(Exit.isFailure(exit));
|
|
1375
1375
|
if (Exit.isFailure(exit)) {
|
|
1376
1376
|
const failure = Cause.failureOption(exit.cause);
|
|
1377
1377
|
assert.isTrue(failure._tag === 'Some');
|
|
1378
1378
|
if (failure._tag === 'Some') {
|
|
1379
1379
|
assert.isTrue(Plugin.LazyPluginError.is(failure.value));
|
|
1380
|
-
assert.strictEqual((failure.value as Plugin.LazyPluginError).context.id, lazyMeta.
|
|
1380
|
+
assert.strictEqual((failure.value as Plugin.LazyPluginError).context.id, lazyMeta.profile.key);
|
|
1381
1381
|
assert.strictEqual((failure.value as Plugin.LazyPluginError).context.reason, 'load-failed');
|
|
1382
1382
|
}
|
|
1383
1383
|
}
|
|
@@ -1395,11 +1395,13 @@ describe('PluginManager', () => {
|
|
|
1395
1395
|
const manager = PluginManager.make({ pluginLoader });
|
|
1396
1396
|
// Subscribe first so we don't miss the activating/error pair.
|
|
1397
1397
|
const queue = yield* PubSub.subscribe(manager.activation);
|
|
1398
|
-
yield* manager.add(lazyMeta.
|
|
1399
|
-
yield* Effect.exit(manager.enable(lazyMeta.
|
|
1398
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1399
|
+
yield* Effect.exit(manager.enable(lazyMeta.profile.key));
|
|
1400
1400
|
const messages = yield* Queue.takeAll(queue);
|
|
1401
1401
|
|
|
1402
|
-
const errorMessage = [...messages].find(
|
|
1402
|
+
const errorMessage = [...messages].find(
|
|
1403
|
+
(m) => m.module === `lazy:${lazyMeta.profile.key}` && m.state === 'error',
|
|
1404
|
+
);
|
|
1403
1405
|
assert.isDefined(errorMessage);
|
|
1404
1406
|
assert.isDefined(errorMessage!.error);
|
|
1405
1407
|
}).pipe(Effect.scoped),
|
|
@@ -1434,7 +1436,7 @@ describe('PluginManager', () => {
|
|
|
1434
1436
|
// coalescing, the underlying factory should still run exactly once.
|
|
1435
1437
|
plugins = [lazyStub];
|
|
1436
1438
|
const manager = PluginManager.make({ pluginLoader, plugins });
|
|
1437
|
-
yield* manager.enable(coreLazyMeta.
|
|
1439
|
+
yield* manager.enable(coreLazyMeta.profile.key);
|
|
1438
1440
|
assert.strictEqual(factoryCalls, 1);
|
|
1439
1441
|
}),
|
|
1440
1442
|
);
|
|
@@ -1447,9 +1449,9 @@ describe('PluginManager', () => {
|
|
|
1447
1449
|
plugins = [lazyStub];
|
|
1448
1450
|
|
|
1449
1451
|
const manager = PluginManager.make({ pluginLoader });
|
|
1450
|
-
yield* manager.add(lazyMeta.
|
|
1452
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1451
1453
|
|
|
1452
|
-
const exit = yield* Effect.exit(manager.enable(lazyMeta.
|
|
1454
|
+
const exit = yield* Effect.exit(manager.enable(lazyMeta.profile.key));
|
|
1453
1455
|
assert.isTrue(Exit.isFailure(exit));
|
|
1454
1456
|
if (Exit.isFailure(exit)) {
|
|
1455
1457
|
const failure = Cause.failureOption(exit.cause);
|
|
@@ -1492,7 +1494,7 @@ describe('PluginManager', () => {
|
|
|
1492
1494
|
|
|
1493
1495
|
it.effect('records and auto-disables a plugin whose module exceeds the activation timeout', () =>
|
|
1494
1496
|
Effect.gen(function* () {
|
|
1495
|
-
const SlowEvent = ActivationEvent.make('org.dxos.test.
|
|
1497
|
+
const SlowEvent = ActivationEvent.make('org.dxos.test.activationTimeout');
|
|
1496
1498
|
const SlowPlugin = Plugin.define(
|
|
1497
1499
|
Plugin.makeMeta({
|
|
1498
1500
|
key: DXN.make('org.dxos.test.slowActivation'),
|
|
@@ -1517,8 +1519,8 @@ describe('PluginManager', () => {
|
|
|
1517
1519
|
registry,
|
|
1518
1520
|
activationTimeout: Duration.seconds(2),
|
|
1519
1521
|
});
|
|
1520
|
-
yield* manager.add(SlowPlugin.meta.
|
|
1521
|
-
yield* manager.enable(SlowPlugin.meta.
|
|
1522
|
+
yield* manager.add(SlowPlugin.meta.profile.key);
|
|
1523
|
+
yield* manager.enable(SlowPlugin.meta.profile.key);
|
|
1522
1524
|
|
|
1523
1525
|
const fiber = yield* Effect.fork(manager.activate(SlowEvent));
|
|
1524
1526
|
// Push past the 2s activation timeout. The forked module fiber is on
|
|
@@ -1529,13 +1531,13 @@ describe('PluginManager', () => {
|
|
|
1529
1531
|
|
|
1530
1532
|
const failed = manager.getFailed();
|
|
1531
1533
|
assert.strictEqual(failed.length, 1);
|
|
1532
|
-
assert.strictEqual(failed[0].id, SlowPlugin.meta.
|
|
1534
|
+
assert.strictEqual(failed[0].id, SlowPlugin.meta.profile.key);
|
|
1533
1535
|
assert.strictEqual(failed[0].phase, 'activation');
|
|
1534
1536
|
assert.strictEqual(failed[0].reason, 'timeout');
|
|
1535
1537
|
|
|
1536
1538
|
// Auto-disable runs in a forked fiber on the default runtime; wait for
|
|
1537
1539
|
// the `enabled` atom to settle to the disabled state.
|
|
1538
|
-
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(SlowPlugin.meta.
|
|
1540
|
+
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(SlowPlugin.meta.profile.key));
|
|
1539
1541
|
assert.deepStrictEqual(manager.getEnabled(), []);
|
|
1540
1542
|
}),
|
|
1541
1543
|
);
|
|
@@ -1554,9 +1556,9 @@ describe('PluginManager', () => {
|
|
|
1554
1556
|
registry,
|
|
1555
1557
|
loadTimeout: Duration.seconds(1),
|
|
1556
1558
|
});
|
|
1557
|
-
yield* manager.add(lazyMeta.
|
|
1559
|
+
yield* manager.add(lazyMeta.profile.key);
|
|
1558
1560
|
|
|
1559
|
-
const enableFiber = yield* Effect.fork(manager.enable(lazyMeta.
|
|
1561
|
+
const enableFiber = yield* Effect.fork(manager.enable(lazyMeta.profile.key));
|
|
1560
1562
|
yield* TestClock.adjust(Duration.seconds(2));
|
|
1561
1563
|
const exit = yield* Fiber.await(enableFiber);
|
|
1562
1564
|
assert.isTrue(Exit.isFailure(exit));
|
|
@@ -1573,19 +1575,19 @@ describe('PluginManager', () => {
|
|
|
1573
1575
|
|
|
1574
1576
|
const failed = manager.getFailed();
|
|
1575
1577
|
assert.strictEqual(failed.length, 1);
|
|
1576
|
-
assert.strictEqual(failed[0].id, lazyMeta.
|
|
1578
|
+
assert.strictEqual(failed[0].id, lazyMeta.profile.key);
|
|
1577
1579
|
assert.strictEqual(failed[0].phase, 'load');
|
|
1578
1580
|
assert.strictEqual(failed[0].reason, 'timeout');
|
|
1579
1581
|
|
|
1580
1582
|
// The plugin was added to `enabled` before the lazy resolution failed,
|
|
1581
1583
|
// so the auto-disable fork should clear it.
|
|
1582
|
-
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(lazyMeta.
|
|
1584
|
+
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(lazyMeta.profile.key));
|
|
1583
1585
|
}),
|
|
1584
1586
|
);
|
|
1585
1587
|
|
|
1586
1588
|
it.effect('records non-timeout activation errors as reason: error', () =>
|
|
1587
1589
|
Effect.gen(function* () {
|
|
1588
|
-
const FailingEvent = ActivationEvent.make('org.dxos.test.
|
|
1590
|
+
const FailingEvent = ActivationEvent.make('org.dxos.test.activationError');
|
|
1589
1591
|
const FailingPlugin = Plugin.define(
|
|
1590
1592
|
Plugin.makeMeta({ key: DXN.make('org.dxos.test.failing'), name: 'Failing' }),
|
|
1591
1593
|
).pipe(
|
|
@@ -1600,8 +1602,8 @@ describe('PluginManager', () => {
|
|
|
1600
1602
|
|
|
1601
1603
|
const registry = Registry.make();
|
|
1602
1604
|
const manager = PluginManager.make({ pluginLoader, registry });
|
|
1603
|
-
yield* manager.add(FailingPlugin.meta.
|
|
1604
|
-
yield* manager.enable(FailingPlugin.meta.
|
|
1605
|
+
yield* manager.add(FailingPlugin.meta.profile.key);
|
|
1606
|
+
yield* manager.enable(FailingPlugin.meta.profile.key);
|
|
1605
1607
|
|
|
1606
1608
|
const exit = yield* Effect.exit(manager.activate(FailingEvent));
|
|
1607
1609
|
assert.isTrue(Exit.isFailure(exit));
|
|
@@ -1611,13 +1613,13 @@ describe('PluginManager', () => {
|
|
|
1611
1613
|
assert.strictEqual(failed[0].reason, 'error');
|
|
1612
1614
|
assert.strictEqual(failed[0].error.message, 'boom');
|
|
1613
1615
|
|
|
1614
|
-
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(FailingPlugin.meta.
|
|
1616
|
+
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(FailingPlugin.meta.profile.key));
|
|
1615
1617
|
}),
|
|
1616
1618
|
);
|
|
1617
1619
|
|
|
1618
1620
|
it.effect('does not auto-disable a core plugin even though the failure is recorded', () =>
|
|
1619
1621
|
Effect.gen(function* () {
|
|
1620
|
-
const FailingEvent = ActivationEvent.make('org.dxos.test.
|
|
1622
|
+
const FailingEvent = ActivationEvent.make('org.dxos.test.coreFail');
|
|
1621
1623
|
const CorePlugin = Plugin.define(
|
|
1622
1624
|
Plugin.makeMeta({ key: DXN.make('org.dxos.test.core'), name: 'Core', tags: ['system'] }),
|
|
1623
1625
|
).pipe(
|
|
@@ -1641,7 +1643,7 @@ describe('PluginManager', () => {
|
|
|
1641
1643
|
|
|
1642
1644
|
assert.strictEqual(manager.getFailed().length, 1);
|
|
1643
1645
|
// Core stays enabled; host opted into it being non-removable.
|
|
1644
|
-
assert.deepStrictEqual(manager.getEnabled(), [corePlugin.meta.
|
|
1646
|
+
assert.deepStrictEqual(manager.getEnabled(), [corePlugin.meta.profile.key]);
|
|
1645
1647
|
}),
|
|
1646
1648
|
);
|
|
1647
1649
|
|
|
@@ -1667,22 +1669,22 @@ describe('PluginManager', () => {
|
|
|
1667
1669
|
|
|
1668
1670
|
const registry = Registry.make();
|
|
1669
1671
|
const manager = PluginManager.make({ pluginLoader, registry });
|
|
1670
|
-
yield* manager.add(flakyPlugin.meta.
|
|
1671
|
-
yield* manager.enable(flakyPlugin.meta.
|
|
1672
|
+
yield* manager.add(flakyPlugin.meta.profile.key);
|
|
1673
|
+
yield* manager.enable(flakyPlugin.meta.profile.key);
|
|
1672
1674
|
|
|
1673
1675
|
yield* Effect.exit(manager.activate(Event));
|
|
1674
1676
|
assert.strictEqual(manager.getFailed().length, 1);
|
|
1675
|
-
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(flakyPlugin.meta.
|
|
1677
|
+
yield* waitFor(registry, manager.enabled, (ids) => !ids.includes(flakyPlugin.meta.profile.key));
|
|
1676
1678
|
|
|
1677
1679
|
// Calling `enable` again clears the prior failure record before
|
|
1678
1680
|
// attempting resolution; verify the explicit API does too.
|
|
1679
|
-
assert.isTrue(manager.clearFailure(flakyPlugin.meta.
|
|
1681
|
+
assert.isTrue(manager.clearFailure(flakyPlugin.meta.profile.key));
|
|
1680
1682
|
assert.strictEqual(manager.getFailed().length, 0);
|
|
1681
|
-
assert.isFalse(manager.clearFailure(flakyPlugin.meta.
|
|
1683
|
+
assert.isFalse(manager.clearFailure(flakyPlugin.meta.profile.key));
|
|
1682
1684
|
|
|
1683
1685
|
// Retry: enable + reset the activation event so the module re-runs.
|
|
1684
1686
|
shouldFail = false;
|
|
1685
|
-
yield* manager.enable(flakyPlugin.meta.
|
|
1687
|
+
yield* manager.enable(flakyPlugin.meta.profile.key);
|
|
1686
1688
|
yield* manager.reset(Event);
|
|
1687
1689
|
assert.strictEqual(manager.getFailed().length, 0);
|
|
1688
1690
|
assert.strictEqual(manager.capabilities.getAll(String).length, 1);
|
|
@@ -1695,15 +1697,15 @@ describe('PluginManager', () => {
|
|
|
1695
1697
|
// focused on the dependency semantics rather than module wiring.
|
|
1696
1698
|
// These dependency-graph tests use short opaque ids (`'a'`, `'coreClient'`,
|
|
1697
1699
|
// `'org.dxos.missing'`) as graph keys rather than real DXNs. `id`/`dependsOn` are
|
|
1698
|
-
// bare strings; only `key` (an unused DXN here) is cast at this test-only boundary.
|
|
1699
1700
|
const makePlugin = (id: string, dependsOn?: string[], tags?: string[]) =>
|
|
1700
1701
|
Plugin.make(
|
|
1701
1702
|
Plugin.define({
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1703
|
+
profile: {
|
|
1704
|
+
key: id,
|
|
1705
|
+
name: id,
|
|
1706
|
+
dependsOn,
|
|
1707
|
+
tags,
|
|
1708
|
+
},
|
|
1707
1709
|
}),
|
|
1708
1710
|
)();
|
|
1709
1711
|
|
|
@@ -1871,11 +1873,8 @@ describe('PluginManager', () => {
|
|
|
1871
1873
|
registry.set(manager.pluginRegistry.plugins, {
|
|
1872
1874
|
entries: [
|
|
1873
1875
|
{
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
moduleUrl: 'about:blank',
|
|
1877
|
-
repo: 'example/remote',
|
|
1878
|
-
version: 'v0.0.0',
|
|
1876
|
+
profile: { key: 'remote', name: 'Remote' },
|
|
1877
|
+
release: { version: 'v0.0.0', moduleUrl: 'about:blank' },
|
|
1879
1878
|
},
|
|
1880
1879
|
],
|
|
1881
1880
|
loading: false,
|
|
@@ -1885,7 +1884,7 @@ describe('PluginManager', () => {
|
|
|
1885
1884
|
const ok = yield* manager.enable('dependent');
|
|
1886
1885
|
assert.isTrue(ok);
|
|
1887
1886
|
assert.deepStrictEqual(manager.getEnabled(), ['remote', 'dependent']);
|
|
1888
|
-
assert.isTrue(manager.getPlugins().some((plugin) => plugin.meta.
|
|
1887
|
+
assert.isTrue(manager.getPlugins().some((plugin) => plugin.meta.profile.key === 'remote'));
|
|
1889
1888
|
}),
|
|
1890
1889
|
);
|
|
1891
1890
|
|
|
@@ -1905,11 +1904,8 @@ describe('PluginManager', () => {
|
|
|
1905
1904
|
registry.set(manager.pluginRegistry.plugins, {
|
|
1906
1905
|
entries: [
|
|
1907
1906
|
{
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
moduleUrl: 'about:blank',
|
|
1911
|
-
repo: 'example/broken',
|
|
1912
|
-
version: 'v0.0.0',
|
|
1907
|
+
profile: { key: 'remote-broken', name: 'Broken' },
|
|
1908
|
+
release: { version: 'v0.0.0', moduleUrl: 'about:blank' },
|
|
1913
1909
|
},
|
|
1914
1910
|
],
|
|
1915
1911
|
loading: false,
|