@reventlessdev/reventless-infra 3.0.0-alpha.81

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 (73) hide show
  1. package/CHANGELOG.md +709 -0
  2. package/LICENSE +202 -0
  3. package/package.json +35 -0
  4. package/rescript.json +28 -0
  5. package/src/adapter/Adapter.res +88 -0
  6. package/src/adapter/Adapter.res.mjs +29 -0
  7. package/src/components/Aggregate.res +73 -0
  8. package/src/components/Aggregate.res.mjs +2 -0
  9. package/src/components/Api.res +124 -0
  10. package/src/components/Api.res.mjs +31 -0
  11. package/src/components/Api_Adapter.res +39 -0
  12. package/src/components/Api_Adapter.res.mjs +2 -0
  13. package/src/components/AutomationSlice.res +48 -0
  14. package/src/components/AutomationSlice.res.mjs +2 -0
  15. package/src/components/CommandGenerator.res +8 -0
  16. package/src/components/CommandGenerator.res.mjs +2 -0
  17. package/src/components/CommandTopic.res +70 -0
  18. package/src/components/CommandTopic.res.mjs +2 -0
  19. package/src/components/Component.js +56 -0
  20. package/src/components/Component.mjs +10 -0
  21. package/src/components/Component.res +90 -0
  22. package/src/components/Component.res.mjs +57 -0
  23. package/src/components/Component.resi +21 -0
  24. package/src/components/Counter.res +81 -0
  25. package/src/components/Counter.res.mjs +2 -0
  26. package/src/components/DcbEventLog.res +115 -0
  27. package/src/components/DcbEventLog.res.mjs +2 -0
  28. package/src/components/EventCollector.res +19 -0
  29. package/src/components/EventCollector.res.mjs +2 -0
  30. package/src/components/EventLog.res +24 -0
  31. package/src/components/EventLog.res.mjs +2 -0
  32. package/src/components/EventMapper.res +37 -0
  33. package/src/components/EventMapper.res.mjs +2 -0
  34. package/src/components/EventTopic.res +51 -0
  35. package/src/components/EventTopic.res.mjs +2 -0
  36. package/src/components/Extension.res +64 -0
  37. package/src/components/Extension.res.mjs +2 -0
  38. package/src/components/ExtensionPoint.res +62 -0
  39. package/src/components/ExtensionPoint.res.mjs +2 -0
  40. package/src/components/Heartbeat.res +7 -0
  41. package/src/components/Heartbeat.res.mjs +2 -0
  42. package/src/components/InboundTranslationSlice.res +41 -0
  43. package/src/components/InboundTranslationSlice.res.mjs +2 -0
  44. package/src/components/OutboundTranslationSlice.res +44 -0
  45. package/src/components/OutboundTranslationSlice.res.mjs +2 -0
  46. package/src/components/Plugin.res +84 -0
  47. package/src/components/Plugin.res.mjs +2 -0
  48. package/src/components/QueryDb.res +48 -0
  49. package/src/components/QueryDb.res.mjs +33 -0
  50. package/src/components/ReadModel.res +50 -0
  51. package/src/components/ReadModel.res.mjs +2 -0
  52. package/src/components/Scheduler.res +32 -0
  53. package/src/components/Scheduler.res.mjs +2 -0
  54. package/src/components/StateChangeSlice.res +45 -0
  55. package/src/components/StateChangeSlice.res.mjs +2 -0
  56. package/src/components/StateViewSlice.res +38 -0
  57. package/src/components/StateViewSlice.res.mjs +2 -0
  58. package/src/components/Task.res +89 -0
  59. package/src/components/Task.res.mjs +2 -0
  60. package/src/types/ExtensionMapping.res +448 -0
  61. package/src/types/ExtensionMapping.res.mjs +252 -0
  62. package/src/types/ExtensionPointMapping.res +303 -0
  63. package/src/types/ExtensionPointMapping.res.mjs +116 -0
  64. package/src/types/Message.res +3 -0
  65. package/src/types/Message.res.mjs +2 -0
  66. package/src/types/NoEventMappings.res +25 -0
  67. package/src/types/NoEventMappings.res.mjs +17 -0
  68. package/src/types/Platform.res +279 -0
  69. package/src/types/Platform.res.mjs +2 -0
  70. package/src/types/PluginExtensionPointSpec.res +43 -0
  71. package/src/types/PluginExtensionPointSpec.res.mjs +204 -0
  72. package/src/types/ResourceNaming.res +12 -0
  73. package/src/types/ResourceNaming.res.mjs +2 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ Produces an empty `EventMapper.Mappings` module for aggregates that do not
3
+ need to route their events to other aggregates.
4
+
5
+ Use this when creating an aggregate via `Platform.Aggregate.Make` and the
6
+ aggregate's events do not trigger commands on other aggregates.
7
+
8
+ @example
9
+ ```rescript
10
+ // CatalogPlugin.res
11
+ module CategoryAggregate = Platform.Aggregate.Make(
12
+ Category,
13
+ CategoryBehavior,
14
+ NoEventMappings.Make(Category),
15
+ )
16
+ ```
17
+ */
18
+ module Make = (Target: Reventless.EventMapping.Target): (
19
+ EventMapper.Mappings with module Target := Target
20
+ ) => {
21
+ module type Mapping = Reventless.EventMapping.T with module Target := Target
22
+ let moduleUrl: string = %raw(`import.meta.url`)
23
+ let mappings = []
24
+ let counter = None
25
+ }
@@ -0,0 +1,17 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+
4
+ function Make(Target) {
5
+ let moduleUrl = import.meta.url;
6
+ let mappings = [];
7
+ return {
8
+ moduleUrl: moduleUrl,
9
+ mappings: mappings,
10
+ counter: undefined
11
+ };
12
+ }
13
+
14
+ export {
15
+ Make,
16
+ }
17
+ /* No side effect */
@@ -0,0 +1,279 @@
1
+ // Platform module type — abstract factory interface for platform-agnostic component assembly.
2
+ //
3
+ // Lives in reventless-infra so application plugin assembly code can depend on
4
+ // reventless-infra. The concrete implementation in reventless-aws satisfies this type.
5
+ //
6
+ // Usage pattern:
7
+ //
8
+ // // app/MyPlugin.res — imports reventless-infra
9
+ // module Make = (Platform: ReventlessInfra.Platform.T) => {
10
+ // module MyAggregate = Platform.Aggregate.Make(MySpec, MyBehavior, MyMappings)
11
+ // module MyReadModel = Platform.ReadModel.Make(MyRmSpec, MyMappings)
12
+ // // ...
13
+ // }
14
+ //
15
+ // // index.res — Composition Root; the only file that imports reventless-aws
16
+ // module Platform = ReventlessAws.Platform.Make(Config)
17
+ // module App = MyPlugin.Make(Platform)
18
+
19
+ // Type alias for admin extension points dict — defined at file scope so it
20
+ // remains accessible inside module type T even though T re-declares
21
+ // `module ExtensionPoint` with a different local type, which would otherwise
22
+ // shadow the package-level ExtensionPoint.outputs.
23
+ /**
24
+ Abstract factory interface for creating Reventless components without coupling
25
+ application code to a specific infrastructure provider.
26
+
27
+ Inject a `Platform.T` module (e.g. `ReventlessAws.Platform.Make(Config)`) at
28
+ the composition root, and use its nested `Make` functors everywhere else.
29
+
30
+ @example
31
+ ```rescript
32
+ // CatalogPlugin.res — depends on reventless-infra
33
+ module Make = (Platform: Platform.T) => {
34
+ module CategoryAggregate = Platform.Aggregate.Make(
35
+ Category,
36
+ CategoryBehavior,
37
+ NoEventMappings.Make(Category),
38
+ )
39
+ module CategoryReadModel = Platform.ReadModel.Make(CategoriesReadModel, CategoryMappings)
40
+ }
41
+
42
+ // index.res — the only file that imports reventless-aws
43
+ module Platform = ReventlessAws.Platform.Make(AwsConfig)
44
+ module App = CatalogPlugin.Make(Platform)
45
+ ```
46
+ */
47
+
48
+ // Type alias to avoid shadowing by the nested `module Api` inside Platform.T.
49
+ type apiComponent = Api.component
50
+
51
+ // Type alias so `deployPlugin` can reference `Plugin.outputs` inside module type T,
52
+ // where `module Plugin: Plugin.T` shadows the package-level Plugin module.
53
+ type pluginOutputs = Plugin.outputs
54
+
55
+ // Module type alias so StateViewSliceStream can reference the component T
56
+ // without being confused by the `module StateViewSlice` declaration inside T.
57
+ module type StateViewSliceComponentT = StateViewSlice.T
58
+
59
+ // Same trick for ReadModelStream: the nested `module ReadModel` declaration
60
+ // inside T shadows the package-level ReadModel for later declarations, so
61
+ // reference its component T through this file-scope alias.
62
+ module type ReadModelComponentT = ReadModel.T
63
+
64
+ module type T = {
65
+ /** Platform-specific API type (e.g. `Types.AppSync.api` for AWS, `unit` for in-memory). */
66
+ type api
67
+
68
+ /** Platform-specific role type (e.g. `Types.AppSync.role` for AWS, `unit` for in-memory). */
69
+ type role
70
+
71
+ /** The platform's API instance — used by bundled DCB slice builders that need
72
+ to create QueryDb resolvers inside the Platform functor. */
73
+ let api: api
74
+
75
+ /** The platform's API role instance — used alongside `api` for QueryDb resolvers. */
76
+ let apiRole: role
77
+
78
+ /** Factory for event-sourced aggregate components. */
79
+ module Aggregate: {
80
+ module Make: (
81
+ Spec: Reventless.Aggregate.Spec,
82
+ Behavior: Reventless.Behavior.T with module Spec := Spec,
83
+ EventMappings: EventMapper.Mappings with module Target := Spec,
84
+ ) => Aggregate.T with type api = api
85
+ /** Async variant — uses FIFO channel, returns `CommandPending`. */
86
+ module MakeAsync: (
87
+ Spec: Reventless.Aggregate.Spec,
88
+ Behavior: Reventless.Behavior.T with module Spec := Spec,
89
+ EventMappings: EventMapper.Mappings with module Target := Spec,
90
+ ) => Aggregate.T with type api = api
91
+ }
92
+
93
+ /** Factory for read model (query-side projection) components. */
94
+ module ReadModel: {
95
+ module Make: (
96
+ Spec: Reventless.ReadModel.Spec,
97
+ Mappings: Reventless.Projection.Mappings with module Target := Spec,
98
+ ) => ReadModel.T with module Spec = Spec and type api = api and type role = role
99
+ }
100
+
101
+ /** Factory for stream-enabled read model components — identical to `ReadModel`
102
+ but the QueryDb table has a DynamoDB Stream so the platform wires a
103
+ `StateTopic` Lambda that pushes row changes to the AppSync Events API
104
+ (Source B subscriptions / AutoUI live updates). In-memory: same as
105
+ `ReadModel` (no streams). */
106
+ module ReadModelStream: {
107
+ module Make: (
108
+ Spec: Reventless.ReadModel.Spec,
109
+ Mappings: Reventless.Projection.Mappings with module Target := Spec,
110
+ ) => ReadModelComponentT with module Spec = Spec and type api = api and type role = role
111
+ }
112
+
113
+ /** Factory for extension point components (single mapping). */
114
+ module ExtensionPoint: {
115
+ module Make: (
116
+ Mapping: ExtensionPointMapping.Mapping,
117
+ ) => ExtensionPoint.T
118
+
119
+ /** Two-mapping variant — merges per-slice EP mappings. */
120
+ module Make2: (
121
+ Mapping1: ExtensionPointMapping.Mapping,
122
+ Mapping2: ExtensionPointMapping.Mapping
123
+ with module ExtensionPoint = Mapping1.ExtensionPoint,
124
+ ) => ExtensionPoint.T
125
+
126
+ /** Three-mapping variant — merges per-slice EP mappings. */
127
+ module Make3: (
128
+ Mapping1: ExtensionPointMapping.Mapping,
129
+ Mapping2: ExtensionPointMapping.Mapping
130
+ with module ExtensionPoint = Mapping1.ExtensionPoint,
131
+ Mapping3: ExtensionPointMapping.Mapping
132
+ with module ExtensionPoint = Mapping1.ExtensionPoint,
133
+ ) => ExtensionPoint.T
134
+
135
+ /** Multi-mapping variant with full control over name and mappings array. */
136
+ module MakeMulti: (
137
+ Spec: ExtensionPointMapping.Spec,
138
+ Mappings: ExtensionPoint.Mappings with module Spec := Spec,
139
+ ) => ExtensionPoint.T
140
+ }
141
+
142
+ /** Factory for extension blueprints (single mapping).
143
+ Returns a blueprint — not a built component. `Plugin.make` builds it,
144
+ using the plugin name for the extension's component name and auto-merging
145
+ blueprints that target the same extension point. */
146
+ module Extension: {
147
+ module Make: (
148
+ Mapping: ExtensionMapping.Mapping,
149
+ ) => Extension.Blueprint
150
+ }
151
+
152
+ /** Factory for task (background job / S3 trigger) components. */
153
+ module Task: {
154
+ module Make: (Spec: Task.Spec) => Task.T with module Spec = Spec
155
+ }
156
+
157
+ /** Ready-to-use counter component (no Make required). */
158
+ module Counter: Counter.T
159
+
160
+ /** Factory for DCB write-side state-change slice components. */
161
+ module StateChangeSlice: {
162
+ module Make: (
163
+ Spec: Reventless.StateChangeSlice.Spec,
164
+ Behavior: Reventless.StateChangeSlice.Behavior with module Spec := Spec,
165
+ ) => StateChangeSlice.T with module Spec = Spec
166
+ /** Async variant — uses FIFO channel, returns `CommandPending`. */
167
+ module MakeAsync: (
168
+ Spec: Reventless.StateChangeSlice.Spec,
169
+ Behavior: Reventless.StateChangeSlice.Behavior with module Spec := Spec,
170
+ ) => StateChangeSlice.T with module Spec = Spec
171
+ }
172
+
173
+ /** Factory for DCB read-side state-view slice components. */
174
+ module StateViewSlice: {
175
+ module Make: (
176
+ Spec: Reventless.StateViewSlice.Spec,
177
+ Projection: Reventless.StateViewSlice.Projection with module Spec := Spec,
178
+ ) => StateViewSlice.T with module Spec = Spec
179
+ }
180
+
181
+ /** Factory for stream-enabled state-view slice components (enables Source B subscriptions). */
182
+ module StateViewSliceStream: {
183
+ module Make: (
184
+ Spec: Reventless.StateViewSlice.Spec,
185
+ Projection: Reventless.StateViewSlice.Projection with module Spec := Spec,
186
+ ) => StateViewSliceComponentT with module Spec = Spec
187
+ }
188
+
189
+ /** Factory for DCB automation slice components (TODO list pattern). */
190
+ module AutomationSlice: {
191
+ module Make: (
192
+ Spec: Reventless.AutomationSlice.Spec,
193
+ Automation: Reventless.AutomationSlice.Automation with module Spec := Spec,
194
+ ) => AutomationSlice.T with module Spec = Spec
195
+ }
196
+
197
+ /** Factory for DCB outbound translation slice components (tracked external calls). */
198
+ module OutboundTranslationSlice: {
199
+ module Make: (
200
+ Spec: Reventless.OutboundTranslationSlice.Spec,
201
+ Translation: Reventless.OutboundTranslationSlice.Translation with module Spec := Spec,
202
+ ) => OutboundTranslationSlice.T with module Spec = Spec
203
+ }
204
+
205
+ /** Factory for DCB inbound translation slice components (external input to commands). */
206
+ module InboundTranslationSlice: {
207
+ module Make: (
208
+ Spec: Reventless.InboundTranslationSlice.Spec,
209
+ Translation: Reventless.InboundTranslationSlice.Translation with module Spec := Spec,
210
+ ) => InboundTranslationSlice.T with module Spec = Spec
211
+ }
212
+
213
+ /** Factory for the API (GraphQL) component. */
214
+ module Api: {
215
+ module Make: (Config: {
216
+ let baseFragment: Api.schemaFragment
217
+ }) => Api.T
218
+ }
219
+
220
+ /** Whether this platform supports MCP (Model Context Protocol) for AI agent access.
221
+ In-memory: starts an MCP server alongside GraphQL in makePlatform.
222
+ AWS: deploys a Lambda Function URL with Streamable HTTP transport. */
223
+ type mcpSupported = | @as(true) McpSupported | @as(false) McpNotSupported
224
+ let mcpSupported: mcpSupported
225
+
226
+ /** Which AppSync API a plugin's resolvers and schema are deployed to.
227
+ Domain — the application-facing API (default, backwards-compatible).
228
+ Platform — the admin/Platform_Sync* API (for framework-internal plugins). */
229
+ type apiTarget = Domain | Platform
230
+
231
+ /** Factory for plugin deployment units. */
232
+ module Plugin: Plugin.T with type api = api and type role = role
233
+
234
+ /** Module type for plugin assembly — matches the `make` function produced by
235
+ every plugin's `Make` functor. Pass first-class modules to `makePlatform`. */
236
+ module type PluginMaker = {
237
+ let make: unit => Plugin.component
238
+ }
239
+
240
+ /** Optional host UI shell bundle. When set, the platform hosts the static
241
+ shell (e.g. reventless-ui's host-shell `dist/`) on its own CDN and writes
242
+ a `config.json` next to `index.html` so the shell discovers the API
243
+ endpoint at boot. In-memory platforms typically ignore this — the shell
244
+ is served by `vite dev` against the running in-process GraphQL server. */
245
+ type hostUiBundleConfig = {
246
+ assetsDir: string,
247
+ bundleVersion: string,
248
+ }
249
+
250
+ /** Deploy a complete platform: creates the scheduler, builds each plugin,
251
+ creates admin components internally, and wires everything (schema stitching + stack exports). */
252
+ let makePlatform: (
253
+ ~version: string,
254
+ ~plugins: array<module(PluginMaker)>,
255
+ ) => unit
256
+
257
+ /** Deploy only the platform (admin components, scheduler, shared API).
258
+ No plugins are deployed — each plugin deploys independently via `deployPlugin`.
259
+ Pass `~hostUiBundle` to also host a static host-shell SPA from this stack.
260
+ Returns the Pulumi stack outputs dict for use as the ESM `default` export. */
261
+ let deployPlatform: (
262
+ ~version: string,
263
+ ~hostUiBundle: hostUiBundleConfig=?,
264
+ ) => dict<Pulumi.Output.t<JSON.t>>
265
+
266
+ /** Deploy a single plugin as an independent stack.
267
+ Creates its own scheduler and exports stack outputs for cross-stack consumption.
268
+ Pass `~apiTarget=Platform` to route the plugin's resolvers and schema to the Platform API.
269
+ Defaults to `Domain`.
270
+ Returns the Pulumi stack outputs dict for use as the ESM `default` export. */
271
+ let deployPlugin: (~plugin: module(PluginMaker), ~apiTarget: apiTarget=?) => dict<Pulumi.Output.t<JSON.t>>
272
+
273
+ /** Start all servers after all makePlatform/deployPlugin calls are complete.
274
+ In split in-memory mode, servers are deferred until this is called so all
275
+ plugins (domain and platform) can register their schema before serving requests.
276
+ In AWS and unified in-memory mode this is a no-op — server lifecycle is managed
277
+ by Pulumi / existing inline start() calls. */
278
+ let startServers: unit => unit
279
+ }
@@ -0,0 +1,2 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
@@ -0,0 +1,43 @@
1
+ let name = "Core.Plugin"
2
+
3
+ include Reventless.Plugin
4
+
5
+ @schema
6
+ type timeout = int // in minutes
7
+
8
+ @schema
9
+ type forwardCommand = {
10
+ extensionPointName: string,
11
+ id: string,
12
+ command: string,
13
+ }
14
+
15
+ @schema
16
+ type command =
17
+ | Heartbeat(timeout)
18
+ | ConnectPlugin(pluginDefinition)
19
+ | DisconnectPlugin
20
+ | ForwardCommand(forwardCommand)
21
+
22
+ @schema
23
+ type event =
24
+ | UnknownPluginDetected
25
+ // Emitted when a connecting plugin declared incompatible protocol versions.
26
+ // The plugin is still connected; this event gives operators visibility.
27
+ | IncompatiblePlugin(pluginDefinition)
28
+ | PluginConnected(pluginDefinition)
29
+ | PluginReconnected(pluginDefinition)
30
+ | PluginDisconnected(pluginDefinition)
31
+ | PluginDeactivated(pluginDefinition)
32
+ | PluginActivated(pluginDefinition)
33
+ | PluginRetired(pluginDefinition)
34
+
35
+ @schema
36
+ type directive =
37
+ | CreateDisconnectSchedule(string, timeout)
38
+ | DeleteDisconnectSchedule(string)
39
+ | DoConnectPlugin(pluginDefinition)
40
+ | DoDisconnectPlugin(pluginDefinition)
41
+ | ForwardCommand(forwardCommand)
42
+
43
+ let moduleUrl: string = %raw(`import.meta.url`)
@@ -0,0 +1,204 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as S from "sury/src/S.res.mjs";
4
+ import * as Plugin$Reventless from "@reventlessdev/reventless-spec/src/components/Plugin.res.mjs";
5
+
6
+ let forwardCommandSchema = S.schema(s => ({
7
+ extensionPointName: s.m(S.string),
8
+ id: s.m(S.string),
9
+ command: s.m(S.string)
10
+ }));
11
+
12
+ let commandSchema = S.union([
13
+ S.schema(s => ({
14
+ TAG: "Heartbeat",
15
+ _0: s.m(S.int)
16
+ })),
17
+ S.schema(s => ({
18
+ TAG: "ConnectPlugin",
19
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
20
+ })),
21
+ S.literal("DisconnectPlugin"),
22
+ S.schema(s => ({
23
+ TAG: "ForwardCommand",
24
+ _0: s.m(forwardCommandSchema)
25
+ }))
26
+ ]);
27
+
28
+ let eventSchema = S.union([
29
+ S.literal("UnknownPluginDetected"),
30
+ S.schema(s => ({
31
+ TAG: "IncompatiblePlugin",
32
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
33
+ })),
34
+ S.schema(s => ({
35
+ TAG: "PluginConnected",
36
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
37
+ })),
38
+ S.schema(s => ({
39
+ TAG: "PluginReconnected",
40
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
41
+ })),
42
+ S.schema(s => ({
43
+ TAG: "PluginDisconnected",
44
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
45
+ })),
46
+ S.schema(s => ({
47
+ TAG: "PluginDeactivated",
48
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
49
+ })),
50
+ S.schema(s => ({
51
+ TAG: "PluginActivated",
52
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
53
+ })),
54
+ S.schema(s => ({
55
+ TAG: "PluginRetired",
56
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
57
+ }))
58
+ ]);
59
+
60
+ let directiveSchema = S.union([
61
+ S.schema(s => ({
62
+ TAG: "CreateDisconnectSchedule",
63
+ _0: s.m(S.string),
64
+ _1: s.m(S.int)
65
+ })),
66
+ S.schema(s => ({
67
+ TAG: "DeleteDisconnectSchedule",
68
+ _0: s.m(S.string)
69
+ })),
70
+ S.schema(s => ({
71
+ TAG: "DoConnectPlugin",
72
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
73
+ })),
74
+ S.schema(s => ({
75
+ TAG: "DoDisconnectPlugin",
76
+ _0: s.m(Plugin$Reventless.pluginDefinitionSchema)
77
+ })),
78
+ S.schema(s => ({
79
+ TAG: "ForwardCommand",
80
+ _0: s.m(forwardCommandSchema)
81
+ }))
82
+ ]);
83
+
84
+ let moduleUrl = import.meta.url;
85
+
86
+ let name = "Core.Plugin";
87
+
88
+ let nameSchema = Plugin$Reventless.nameSchema;
89
+
90
+ let versionSchema = Plugin$Reventless.versionSchema;
91
+
92
+ let extensionPointDefinitionSchema = Plugin$Reventless.extensionPointDefinitionSchema;
93
+
94
+ let extensionDefinitionSchema = Plugin$Reventless.extensionDefinitionSchema;
95
+
96
+ let dcbEventLogDefinitionSchema = Plugin$Reventless.dcbEventLogDefinitionSchema;
97
+
98
+ let extensionProtocolSchema = Plugin$Reventless.extensionProtocolSchema;
99
+
100
+ let apiSchemaFragmentSchema = Plugin$Reventless.apiSchemaFragmentSchema;
101
+
102
+ let apiSchemaFragmentOptionSchema = Plugin$Reventless.apiSchemaFragmentOptionSchema;
103
+
104
+ let dcbEventLogOptionSchema = Plugin$Reventless.dcbEventLogOptionSchema;
105
+
106
+ let stringOptionSchema = Plugin$Reventless.stringOptionSchema;
107
+
108
+ let stringArrayOptionSchema = Plugin$Reventless.stringArrayOptionSchema;
109
+
110
+ let boolOptionSchema = Plugin$Reventless.boolOptionSchema;
111
+
112
+ let panelManifestEntrySchema = Plugin$Reventless.panelManifestEntrySchema;
113
+
114
+ let menuEntrySchema = Plugin$Reventless.menuEntrySchema;
115
+
116
+ let pageManifestEntrySchema = Plugin$Reventless.pageManifestEntrySchema;
117
+
118
+ let uiFragmentManifestSchema = Plugin$Reventless.uiFragmentManifestSchema;
119
+
120
+ let uiFragmentManifestOptionSchema = Plugin$Reventless.uiFragmentManifestOptionSchema;
121
+
122
+ let commandLevelSchema = Plugin$Reventless.commandLevelSchema;
123
+
124
+ let fieldReferenceSchema = Plugin$Reventless.fieldReferenceSchema;
125
+
126
+ let commandDefSchema = Plugin$Reventless.commandDefSchema;
127
+
128
+ let queryableDefSchema = Plugin$Reventless.queryableDefSchema;
129
+
130
+ let eventDefSchema = Plugin$Reventless.eventDefSchema;
131
+
132
+ let writableDefSchema = Plugin$Reventless.writableDefSchema;
133
+
134
+ let automationSliceDefSchema = Plugin$Reventless.automationSliceDefSchema;
135
+
136
+ let outboundTranslationSliceDefSchema = Plugin$Reventless.outboundTranslationSliceDefSchema;
137
+
138
+ let inboundTranslationSliceDefSchema = Plugin$Reventless.inboundTranslationSliceDefSchema;
139
+
140
+ let extensionDefSchema = Plugin$Reventless.extensionDefSchema;
141
+
142
+ let extensionPointDefSchema = Plugin$Reventless.extensionPointDefSchema;
143
+
144
+ let extensionPointDefArrayOptionSchema = Plugin$Reventless.extensionPointDefArrayOptionSchema;
145
+
146
+ let pluginStructureSchema = Plugin$Reventless.pluginStructureSchema;
147
+
148
+ let pluginStructureOptionSchema = Plugin$Reventless.pluginStructureOptionSchema;
149
+
150
+ let graphNodeSchema = Plugin$Reventless.graphNodeSchema;
151
+
152
+ let graphEdgeSchema = Plugin$Reventless.graphEdgeSchema;
153
+
154
+ let platformEventGraphSchema = Plugin$Reventless.platformEventGraphSchema;
155
+
156
+ let pluginDefinitionSchema = Plugin$Reventless.pluginDefinitionSchema;
157
+
158
+ let timeoutSchema = S.int;
159
+
160
+ export {
161
+ name,
162
+ nameSchema,
163
+ versionSchema,
164
+ extensionPointDefinitionSchema,
165
+ extensionDefinitionSchema,
166
+ dcbEventLogDefinitionSchema,
167
+ extensionProtocolSchema,
168
+ apiSchemaFragmentSchema,
169
+ apiSchemaFragmentOptionSchema,
170
+ dcbEventLogOptionSchema,
171
+ stringOptionSchema,
172
+ stringArrayOptionSchema,
173
+ boolOptionSchema,
174
+ panelManifestEntrySchema,
175
+ menuEntrySchema,
176
+ pageManifestEntrySchema,
177
+ uiFragmentManifestSchema,
178
+ uiFragmentManifestOptionSchema,
179
+ commandLevelSchema,
180
+ fieldReferenceSchema,
181
+ commandDefSchema,
182
+ queryableDefSchema,
183
+ eventDefSchema,
184
+ writableDefSchema,
185
+ automationSliceDefSchema,
186
+ outboundTranslationSliceDefSchema,
187
+ inboundTranslationSliceDefSchema,
188
+ extensionDefSchema,
189
+ extensionPointDefSchema,
190
+ extensionPointDefArrayOptionSchema,
191
+ pluginStructureSchema,
192
+ pluginStructureOptionSchema,
193
+ graphNodeSchema,
194
+ graphEdgeSchema,
195
+ platformEventGraphSchema,
196
+ pluginDefinitionSchema,
197
+ timeoutSchema,
198
+ forwardCommandSchema,
199
+ commandSchema,
200
+ eventSchema,
201
+ directiveSchema,
202
+ moduleUrl,
203
+ }
204
+ /* forwardCommandSchema Not a pure module */
@@ -0,0 +1,12 @@
1
+ /**
2
+ Provider-agnostic interface for naming infrastructure resources.
3
+
4
+ Injected into extension points and tasks so they can derive unique,
5
+ valid resource names without coupling to a specific cloud provider.
6
+ */
7
+ type operations = {
8
+ /** Validates and sanitizes a proposed resource name to comply with provider rules. */
9
+ validateName: string => string,
10
+ /** Derives a URN-safe name for use in Pulumi resource URNs. */
11
+ urnName: string => string,
12
+ }
@@ -0,0 +1,2 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */