@reventlessdev/reventless-core 3.0.0-alpha.155 → 3.0.0-alpha.157

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 (75) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +49 -150
  3. package/package.json +13 -13
  4. package/src/admin/AdminApi.res +80 -10
  5. package/src/admin/AdminApi.res.mjs +45 -7
  6. package/src/admin/ApiFragmentRegistry/StateChangeSlice/ApiFragmentRegistry.res +65 -0
  7. package/src/admin/ApiFragmentRegistry/StateChangeSlice/ApiFragmentRegistry.res.mjs +87 -0
  8. package/src/admin/ApiFragmentRegistry/StateChangeSlice/ApiFragmentRegistry_Behavior.res +58 -0
  9. package/src/admin/ApiFragmentRegistry/StateChangeSlice/ApiFragmentRegistry_Behavior.res.mjs +135 -0
  10. package/src/admin/ApiFragmentRegistry/StateViewSlice/ApiFragments.res +44 -0
  11. package/src/admin/ApiFragmentRegistry/StateViewSlice/ApiFragments.res.mjs +74 -0
  12. package/src/admin/ApiFragmentRegistry/StateViewSlice/ApiFragments_Projection.res +50 -0
  13. package/src/admin/ApiFragmentRegistry/StateViewSlice/ApiFragments_Projection.res.mjs +80 -0
  14. package/src/admin/Platform_Admin.res +37 -1
  15. package/src/admin/Platform_Admin.res.mjs +18 -5
  16. package/src/admin/Platform_ApiFragmentsApi.res +32 -0
  17. package/src/admin/Platform_ApiFragmentsApi.res.mjs +52 -0
  18. package/src/admin/Platform_UIFragmentsApi.res +1 -1
  19. package/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry.res +50 -0
  20. package/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry.res.mjs +70 -0
  21. package/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry_Behavior.res +33 -0
  22. package/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry_Behavior.res.mjs +80 -0
  23. package/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments.res +33 -0
  24. package/src/admin/{UIFragmentRegistryReadModelSpec.res.mjs → UiFragmentRegistry/StateViewSlice/UiFragments.res.mjs} +24 -2
  25. package/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments_Projection.res +34 -0
  26. package/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments_Projection.res.mjs +54 -0
  27. package/src/components/Api/Api_Naming.res +1 -1
  28. package/src/components/Api/GraphQL_FragmentGenerator.res +7 -11
  29. package/src/components/Api/GraphQL_FragmentGenerator.res.mjs +8 -22
  30. package/src/components/Api/GraphQL_PushPlanner.res +65 -0
  31. package/src/components/Api/GraphQL_PushPlanner.res.mjs +46 -0
  32. package/src/components/Api/GraphQL_Stitcher.res +72 -1
  33. package/src/components/Api/GraphQL_Stitcher.res.mjs +53 -2
  34. package/src/components/Dcb/Dcb_Builder.res +16 -6
  35. package/src/components/Dcb/Dcb_Builder.res.mjs +10 -7
  36. package/src/components/StateChangeSlice/StateChangeSlice_Callback.res +6 -1
  37. package/src/components/StateChangeSlice/StateChangeSlice_Callback.res.mjs +1 -1
  38. package/src/plugin/api/PluginBaseFragment.res +5 -6
  39. package/src/plugin/api/PluginBaseFragment.res.mjs +0 -1
  40. package/src/plugin/component/Plugin_Builder.res +4 -1
  41. package/src/plugin/component/Plugin_Builder.res.mjs +7 -6
  42. package/src/plugin/component/Plugin_Helpers.res +30 -0
  43. package/src/plugin/component/Plugin_Helpers.res.mjs +13 -3
  44. package/src/plugin/component/Plugin_SubscriptionSchema.res +19 -9
  45. package/src/plugin/component/Plugin_SubscriptionSchema.res.mjs +23 -14
  46. package/src/plugin/connect/PluginConnectExtension_Mapping.res +28 -6
  47. package/src/plugin/connect/PluginConnectExtension_Mapping.res.mjs +34 -14
  48. package/src/plugin/connect/PluginExtensionPoint_Builder.res +7 -1
  49. package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +5 -1
  50. package/src/plugin/connect/PluginExtensionPoint_Plugin.res +3 -1
  51. package/src/plugin/connect/PluginExtensionPoint_Plugin.res.mjs +4 -2
  52. package/src/plugin/connect/PluginExtensionPoint_UiFragment.res +52 -0
  53. package/src/plugin/connect/PluginExtensionPoint_UiFragment.res.mjs +74 -0
  54. package/src/plugin/lifecycle/PluginBehavior.res +9 -51
  55. package/src/plugin/lifecycle/PluginBehavior.res.mjs +39 -68
  56. package/src/plugin/lifecycle/PluginSpec.res +0 -18
  57. package/src/plugin/lifecycle/PluginSpec.res.mjs +0 -30
  58. package/src/plugin/lifecycle/PluginsProjection.res +2 -6
  59. package/src/plugin/lifecycle/PluginsProjection.res.mjs +0 -2
  60. package/src/plugin/lifecycle/PluginsReadModelSpec.res +0 -2
  61. package/src/plugin/lifecycle/PluginsReadModelSpec.res.mjs +0 -1
  62. package/tests/admin/Platform_ApiFragmentsApiTest.res +66 -0
  63. package/tests/admin/Platform_ApiFragmentsApiTest.res.mjs +68 -0
  64. package/tests/admin/Platform_UIFragmentsApiTest.res +1 -1
  65. package/tests/api/GraphQL_PushPlannerTest.res +62 -0
  66. package/tests/api/GraphQL_PushPlannerTest.res.mjs +80 -0
  67. package/tests/api/GraphQL_StitcherTest.res +63 -0
  68. package/tests/api/GraphQL_StitcherTest.res.mjs +75 -0
  69. package/tests/logger/LogFormatTest.res +1 -2
  70. package/tests/logger/LogFormatTest.res.mjs +1 -2
  71. package/tests/message/MessageTest.res +0 -3
  72. package/tests/message/MessageTest.res.mjs +0 -3
  73. package/src/admin/UIFragmentRegistryProjection.res +0 -43
  74. package/src/admin/UIFragmentRegistryProjection.res.mjs +0 -81
  75. package/src/admin/UIFragmentRegistryReadModelSpec.res +0 -13
@@ -198,3 +198,66 @@ type Mutation {
198
198
  expect(missing->Array.includes("Ordering_placeOrder"))->toBe(true)
199
199
  })
200
200
  })
201
+
202
+ describe("GraphQL_Stitcher.subscriptionSources", () => {
203
+ testSync("encode/decode round-trips the subscription→mutation source mapping", () => {
204
+ let fragment = encode({
205
+ types: [],
206
+ mutations: [` Catalog_AddProduct(input: AddInput): CommandResult`],
207
+ queries: [],
208
+ subscriptions: [` onCatalog_AddProduct(id: ID): CommandResult`],
209
+ subscriptionSources: [{field: "onCatalog_AddProduct", mutations: ["Catalog_AddProduct"]}],
210
+ })
211
+ let parts = decode(fragment)
212
+ expect(parts.subscriptionSources)->toEqual([
213
+ {field: "onCatalog_AddProduct", mutations: ["Catalog_AddProduct"]},
214
+ ])
215
+ })
216
+
217
+ testSync("decode tolerates fragments encoded before the field existed", () => {
218
+ let legacy: Reventless.Plugin.apiSchemaFragment = {
219
+ encoded: `{"types":[],"mutations":[],"queries":[],"subscriptions":[" onX(id: ID): CommandResult"]}`,
220
+ protocol: "graphql",
221
+ }
222
+ expect(decode(legacy).subscriptionSources)->toEqual([])
223
+ })
224
+
225
+ testSync("collectSubscriptionSources unions across fragments, first wins per field", () => {
226
+ let base = encode({
227
+ types: [],
228
+ mutations: [],
229
+ queries: [],
230
+ subscriptions: [` onUIFragmentChange: UIFragmentChangeEvent`],
231
+ subscriptionSources: [
232
+ {field: "onUIFragmentChange", mutations: ["Platform_UIFragmentRegistered"]},
233
+ ],
234
+ })
235
+ let pluginA = encode({
236
+ types: [],
237
+ mutations: [],
238
+ queries: [],
239
+ subscriptions: [` onA(id: ID): CommandResult`],
240
+ subscriptionSources: [
241
+ {field: "onA", mutations: ["A"]},
242
+ // Colliding field — the base fragment's mapping must win.
243
+ {field: "onUIFragmentChange", mutations: ["Rogue_Mutation"]},
244
+ ],
245
+ })
246
+ let collected = collectSubscriptionSources(~baseFragment=base, ~pluginFragments=[pluginA])
247
+ expect(collected)->toEqual([
248
+ {field: "onUIFragmentChange", mutations: ["Platform_UIFragmentRegistered"]},
249
+ {field: "onA", mutations: ["A"]},
250
+ ])
251
+ })
252
+
253
+ testSync("core-emitted admin base fragment carries no provider directives", () => {
254
+ let base = AdminApi.baseFragment(~cloner=true)
255
+ expect(base.encoded->String.includes("@aws_subscribe"))->toBe(false)
256
+ expect(base.encoded->String.includes("@aws_auth"))->toBe(false)
257
+ // The subscription→mutation fan-in rides the structured metadata instead.
258
+ let parts = decode(base)
259
+ let fields = parts.subscriptionSources->Array.map(s => s.field)
260
+ expect(fields->Array.includes("onUIFragmentChange"))->toBe(true)
261
+ expect(fields->Array.includes("onPluginStatusChange"))->toBe(true)
262
+ })
263
+ })
@@ -1,5 +1,6 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
+ import * as AdminApi$ReventlessCore from "../../src/admin/AdminApi.res.mjs";
3
4
  import * as GraphQL_Stitcher$ReventlessCore from "../../src/components/Api/GraphQL_Stitcher.res.mjs";
4
5
 
5
6
  let fullSchemaSdl = `type Node {
@@ -165,6 +166,80 @@ type Mutation {
165
166
  });
166
167
  });
167
168
 
169
+ globalThis.describe("GraphQL_Stitcher.subscriptionSources", () => {
170
+ globalThis.test("encode/decode round-trips the subscription→mutation source mapping", () => {
171
+ let fragment = GraphQL_Stitcher$ReventlessCore.encode({
172
+ types: [],
173
+ mutations: [` Catalog_AddProduct(input: AddInput): CommandResult`],
174
+ queries: [],
175
+ subscriptions: [` onCatalog_AddProduct(id: ID): CommandResult`],
176
+ subscriptionSources: [{
177
+ field: "onCatalog_AddProduct",
178
+ mutations: ["Catalog_AddProduct"]
179
+ }]
180
+ });
181
+ let parts = GraphQL_Stitcher$ReventlessCore.decode(fragment);
182
+ globalThis.expect(parts.subscriptionSources).toEqual([{
183
+ field: "onCatalog_AddProduct",
184
+ mutations: ["Catalog_AddProduct"]
185
+ }]);
186
+ });
187
+ globalThis.test("decode tolerates fragments encoded before the field existed", () => {
188
+ globalThis.expect(GraphQL_Stitcher$ReventlessCore.decode({
189
+ encoded: `{"types":[],"mutations":[],"queries":[],"subscriptions":[" onX(id: ID): CommandResult"]}`,
190
+ protocol: "graphql"
191
+ }).subscriptionSources).toEqual([]);
192
+ });
193
+ globalThis.test("collectSubscriptionSources unions across fragments, first wins per field", () => {
194
+ let base = GraphQL_Stitcher$ReventlessCore.encode({
195
+ types: [],
196
+ mutations: [],
197
+ queries: [],
198
+ subscriptions: [` onUIFragmentChange: UIFragmentChangeEvent`],
199
+ subscriptionSources: [{
200
+ field: "onUIFragmentChange",
201
+ mutations: ["Platform_UIFragmentRegistered"]
202
+ }]
203
+ });
204
+ let pluginA = GraphQL_Stitcher$ReventlessCore.encode({
205
+ types: [],
206
+ mutations: [],
207
+ queries: [],
208
+ subscriptions: [` onA(id: ID): CommandResult`],
209
+ subscriptionSources: [
210
+ {
211
+ field: "onA",
212
+ mutations: ["A"]
213
+ },
214
+ {
215
+ field: "onUIFragmentChange",
216
+ mutations: ["Rogue_Mutation"]
217
+ }
218
+ ]
219
+ });
220
+ let collected = GraphQL_Stitcher$ReventlessCore.collectSubscriptionSources(base, [pluginA]);
221
+ globalThis.expect(collected).toEqual([
222
+ {
223
+ field: "onUIFragmentChange",
224
+ mutations: ["Platform_UIFragmentRegistered"]
225
+ },
226
+ {
227
+ field: "onA",
228
+ mutations: ["A"]
229
+ }
230
+ ]);
231
+ });
232
+ globalThis.test("core-emitted admin base fragment carries no provider directives", () => {
233
+ let base = AdminApi$ReventlessCore.baseFragment(true);
234
+ globalThis.expect(base.encoded.includes("@aws_subscribe")).toBe(false);
235
+ globalThis.expect(base.encoded.includes("@aws_auth")).toBe(false);
236
+ let parts = GraphQL_Stitcher$ReventlessCore.decode(base);
237
+ let fields = parts.subscriptionSources.map(s => s.field);
238
+ globalThis.expect(fields.includes("onUIFragmentChange")).toBe(true);
239
+ globalThis.expect(fields.includes("onPluginStatusChange")).toBe(true);
240
+ });
241
+ });
242
+
168
243
  export {
169
244
  fullSchemaSdl,
170
245
  collapsedSchemaSdl,
@@ -73,7 +73,6 @@ describe("LogFormat", () => {
73
73
  extensionProtocols: [],
74
74
  apiSchemaFragment: None,
75
75
  apiTarget: None,
76
- uiFragments: None,
77
76
  structure: None,
78
77
  dcbEventLog: None,
79
78
  kind: Domain,
@@ -98,7 +97,7 @@ describe("LogFormat", () => {
98
97
  },
99
98
  )
100
99
  let expected1 = `1/2: \x1b[1mHeartbeat\x1b[0m(0): {"command":{"TAG":"Heartbeat","_0":"0.0.0"},"meta":${metaStr},"id":"0"}`
101
- let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"apiTarget":null,"uiFragments":null,"structure":null,"dcbEventLog":null,"kind":"Domain"}},"meta":${metaStr},"id":"1"}`
100
+ let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"apiTarget":null,"structure":null,"dcbEventLog":null,"kind":"Domain"}},"meta":${metaStr},"id":"1"}`
102
101
  expect(commandJsonsToLogMessages(arr))->toEqual([expected1, expected2])
103
102
  },
104
103
  )
@@ -74,7 +74,6 @@ globalThis.describe("LogFormat", () => {
74
74
  extensionProtocols: [],
75
75
  apiSchemaFragment: undefined,
76
76
  apiTarget: undefined,
77
- uiFragments: undefined,
78
77
  structure: undefined,
79
78
  dcbEventLog: undefined,
80
79
  kind: "Domain"
@@ -96,7 +95,7 @@ globalThis.describe("LogFormat", () => {
96
95
  commandJson: Message$ReventlessCore.encode(command, PluginSpec$ReventlessCore.commandSchema)
97
96
  }));
98
97
  let expected1 = `1/2: \x1b[1mHeartbeat\x1b[0m(0): {"command":{"TAG":"Heartbeat","_0":"0.0.0"},"meta":` + metaStr + `,"id":"0"}`;
99
- let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"apiTarget":null,"uiFragments":null,"structure":null,"dcbEventLog":null,"kind":"Domain"}},"meta":` + metaStr + `,"id":"1"}`;
98
+ let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"apiTarget":null,"structure":null,"dcbEventLog":null,"kind":"Domain"}},"meta":` + metaStr + `,"id":"1"}`;
100
99
  globalThis.expect(LogFormat$ReventlessCore.commandJsonsToLogMessages(arr)).toEqual([
101
100
  expected1,
102
101
  expected2
@@ -41,7 +41,6 @@ describe("Message should", () => {
41
41
  extensionProtocols: [],
42
42
  apiSchemaFragment: None,
43
43
  apiTarget: None,
44
- uiFragments: None,
45
44
  structure: None,
46
45
  dcbEventLog: None,
47
46
  kind: Domain,
@@ -110,7 +109,6 @@ describe("Message should", () => {
110
109
  extensionProtocols: [],
111
110
  apiSchemaFragment: None,
112
111
  apiTarget: None,
113
- uiFragments: None,
114
112
  structure: Some({
115
113
  readModels: [],
116
114
  stateViewSlices: [],
@@ -209,7 +207,6 @@ describe("Message should", () => {
209
207
  extensionProtocols: [],
210
208
  apiSchemaFragment: None,
211
209
  apiTarget: None,
212
- uiFragments: None,
213
210
  structure: None,
214
211
  dcbEventLog: None,
215
212
  kind: Domain,
@@ -41,7 +41,6 @@ globalThis.describe("Message should", () => {
41
41
  extensionProtocols: [],
42
42
  apiSchemaFragment: undefined,
43
43
  apiTarget: undefined,
44
- uiFragments: undefined,
45
44
  structure: undefined,
46
45
  dcbEventLog: undefined,
47
46
  kind: "Domain"
@@ -100,7 +99,6 @@ globalThis.describe("Message should", () => {
100
99
  extensionProtocols: [],
101
100
  apiSchemaFragment: undefined,
102
101
  apiTarget: undefined,
103
- uiFragments: undefined,
104
102
  structure: {
105
103
  readModels: [],
106
104
  stateViewSlices: [],
@@ -188,7 +186,6 @@ globalThis.describe("Message should", () => {
188
186
  extensionProtocols: [],
189
187
  apiSchemaFragment: undefined,
190
188
  apiTarget: undefined,
191
- uiFragments: undefined,
192
189
  structure: undefined,
193
190
  dcbEventLog: undefined,
194
191
  kind: "Domain"
@@ -1,43 +0,0 @@
1
- open Reventless.Message
2
- open Reventless.Projection
3
-
4
- let moduleUrl: string = %raw(`import.meta.url`)
5
-
6
- module UIFragmentRegistryMapping = Reventless.Projection.Mapping.Make(
7
- PluginSpec,
8
- UIFragmentRegistryReadModelSpec,
9
- {
10
- let project = ({event, id, meta: {time}}) =>
11
- switch event {
12
- | PluginSpec.UIFragmentRegistered({manifest}) =>
13
- Set(
14
- id,
15
- {
16
- UIFragmentRegistryReadModelSpec.pluginId: id,
17
- remoteEntryUrl: manifest.remoteEntryUrl,
18
- panels: manifest.panels,
19
- pages: manifest.pages,
20
- registeredAt: time,
21
- updatedAt: time,
22
- },
23
- )
24
- | UIFragmentUpdated({newManifest}) =>
25
- Update(
26
- id,
27
- state => {
28
- ...state,
29
- remoteEntryUrl: newManifest.remoteEntryUrl,
30
- panels: newManifest.panels,
31
- pages: newManifest.pages,
32
- updatedAt: time,
33
- },
34
- )
35
- | UIFragmentDeregistered(_) => Delete(id)
36
- | _ => Ignore
37
- }
38
- },
39
- )
40
-
41
- module Mappings = Reventless.Projection.Mappings.Make(UIFragmentRegistryReadModelSpec)
42
-
43
- let mappings: array<module(Mappings.Mapping)> = [module(UIFragmentRegistryMapping)]
@@ -1,81 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Id$Reventless from "@reventlessdev/reventless-spec/src/types/Id.res.mjs";
4
- import * as Projection$Reventless from "@reventlessdev/reventless-spec/src/types/Projection.res.mjs";
5
- import * as PluginSpec$ReventlessCore from "../plugin/lifecycle/PluginSpec.res.mjs";
6
- import * as UIFragmentRegistryReadModelSpec$ReventlessCore from "./UIFragmentRegistryReadModelSpec.res.mjs";
7
-
8
- let moduleUrl = import.meta.url;
9
-
10
- function project(param) {
11
- let event = param.event;
12
- let time = param.meta.time;
13
- let id = param.id;
14
- switch (event.TAG) {
15
- case "UIFragmentRegistered" :
16
- let manifest = event._0.manifest;
17
- return {
18
- TAG: "Set",
19
- _0: id,
20
- _1: {
21
- pluginId: id,
22
- remoteEntryUrl: manifest.remoteEntryUrl,
23
- panels: manifest.panels,
24
- pages: manifest.pages,
25
- registeredAt: time,
26
- updatedAt: time
27
- }
28
- };
29
- case "UIFragmentUpdated" :
30
- let newManifest = event._0.newManifest;
31
- return {
32
- TAG: "Update",
33
- _0: id,
34
- _1: state => ({
35
- pluginId: state.pluginId,
36
- remoteEntryUrl: newManifest.remoteEntryUrl,
37
- panels: newManifest.panels,
38
- pages: newManifest.pages,
39
- registeredAt: state.registeredAt,
40
- updatedAt: time
41
- })
42
- };
43
- case "UIFragmentDeregistered" :
44
- return {
45
- TAG: "Delete",
46
- _0: id
47
- };
48
- default:
49
- return "Ignore";
50
- }
51
- }
52
-
53
- let UIFragmentRegistryMapping = Projection$Reventless.Mapping.Make({
54
- Id: Id$Reventless.$$String,
55
- name: PluginSpec$ReventlessCore.name,
56
- eventSchema: PluginSpec$ReventlessCore.eventSchema
57
- })({
58
- Id: Id$Reventless.$$String,
59
- name: UIFragmentRegistryReadModelSpec$ReventlessCore.name,
60
- stateSchema: UIFragmentRegistryReadModelSpec$ReventlessCore.stateSchema,
61
- subIdConfig: undefined
62
- })({
63
- project: project
64
- });
65
-
66
- let Mappings = Projection$Reventless.Mappings.Make({
67
- Id: Id$Reventless.$$String,
68
- name: UIFragmentRegistryReadModelSpec$ReventlessCore.name,
69
- stateSchema: UIFragmentRegistryReadModelSpec$ReventlessCore.stateSchema,
70
- subIdConfig: undefined
71
- });
72
-
73
- let mappings = [UIFragmentRegistryMapping];
74
-
75
- export {
76
- moduleUrl,
77
- UIFragmentRegistryMapping,
78
- Mappings,
79
- mappings,
80
- }
81
- /* moduleUrl Not a pure module */
@@ -1,13 +0,0 @@
1
- @@reventless.spec("UIFragmentRegistry")
2
-
3
- open Reventless.Plugin
4
-
5
- @schema
6
- type state = {
7
- pluginId: string,
8
- remoteEntryUrl: string,
9
- panels: array<panelManifestEntry>,
10
- pages: array<pageManifestEntry>,
11
- registeredAt: string,
12
- updatedAt: string,
13
- }