@reventlessdev/reventless-core 3.0.0-alpha.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1355 -0
- package/LICENSE +202 -0
- package/README.md +173 -0
- package/__mocks__/emptyModule.js +2 -0
- package/jest.setup.cjs +5 -0
- package/package.json +73 -0
- package/rescript.json +41 -0
- package/scripts/deploy.sh +6 -0
- package/scripts/post-deploy.sh +5 -0
- package/scripts/pre-deploy.sh +18 -0
- package/scripts/pulumi-up.sh +30 -0
- package/src/Behavior.res +18 -0
- package/src/Behavior.res.mjs +2 -0
- package/src/ComponentType.res +125 -0
- package/src/ComponentType.res.mjs +199 -0
- package/src/Env.res +5 -0
- package/src/Env.res.mjs +2 -0
- package/src/Mapper.res +36 -0
- package/src/Mapper.res.mjs +18 -0
- package/src/Mapper1toN.res +107 -0
- package/src/Mapper1toN.res.mjs +2 -0
- package/src/MapperNto1.res +78 -0
- package/src/MapperNto1.res.mjs +35 -0
- package/src/Message.res +353 -0
- package/src/Message.res.mjs +418 -0
- package/src/PluginRuntimeOperations.res +15 -0
- package/src/PluginRuntimeOperations.res.mjs +2 -0
- package/src/Projection.res +447 -0
- package/src/Projection.res.mjs +712 -0
- package/src/ProjectionMapper.res +44 -0
- package/src/ProjectionMapper.res.mjs +51 -0
- package/src/RequestContext.res +42 -0
- package/src/RequestContext.res.mjs +39 -0
- package/src/adapter/Adapter.res +178 -0
- package/src/adapter/Adapter.res.mjs +201 -0
- package/src/adapter/AdapterDeploytime.res +56 -0
- package/src/adapter/AdapterDeploytime.res.mjs +42 -0
- package/src/adapter/Auth/Auth_Adapter.res +42 -0
- package/src/adapter/Auth/Auth_Adapter.res.mjs +2 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder.res +22 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder.res.mjs +2 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res +259 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Common.res.mjs +190 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res +92 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +59 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res +52 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res.mjs +49 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +64 -0
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +59 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder.res +11 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder.res.mjs +2 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res +46 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +40 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +204 -0
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +150 -0
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder.res +18 -0
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder.res.mjs +2 -0
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res +36 -0
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +28 -0
- package/src/adapter/Runtime/PluginRuntime_Builder.res +23 -0
- package/src/adapter/Runtime/PluginRuntime_Builder.res.mjs +2 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res +97 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Micro.res.mjs +62 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Single.res +89 -0
- package/src/adapter/Runtime/PluginRuntime_Builder_Single.res.mjs +62 -0
- package/src/adapter/Runtime/Runtime.res +106 -0
- package/src/adapter/Runtime/Runtime.res.mjs +22 -0
- package/src/adapter/Runtime/TaskRuntime_Builder.res +32 -0
- package/src/adapter/Runtime/TaskRuntime_Builder.res.mjs +2 -0
- package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res +42 -0
- package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res.mjs +29 -0
- package/src/admin/AdminApi.res +88 -0
- package/src/admin/AdminApi.res.mjs +89 -0
- package/src/admin/Admin_Callback.res +27 -0
- package/src/admin/Admin_Callback.res.mjs +20 -0
- package/src/admin/Platform_Admin.res +402 -0
- package/src/admin/Platform_Admin.res.mjs +250 -0
- package/src/admin/Platform_Admin_Structure.res +125 -0
- package/src/admin/Platform_Admin_Structure.res.mjs +182 -0
- package/src/admin/Platform_ComponentDefinitionsApi.res +160 -0
- package/src/admin/Platform_ComponentDefinitionsApi.res.mjs +299 -0
- package/src/admin/Platform_UIFragmentsApi.res +55 -0
- package/src/admin/Platform_UIFragmentsApi.res.mjs +124 -0
- package/src/admin/UIFragmentRegistryProjection.res +43 -0
- package/src/admin/UIFragmentRegistryProjection.res.mjs +81 -0
- package/src/admin/UIFragmentRegistryReadModelSpec.res +13 -0
- package/src/admin/UIFragmentRegistryReadModelSpec.res.mjs +40 -0
- package/src/components/Aggregate/Aggregate.res +96 -0
- package/src/components/Aggregate/Aggregate.res.mjs +82 -0
- package/src/components/Aggregate/Aggregate_Builder.res +175 -0
- package/src/components/Aggregate/Aggregate_Builder.res.mjs +119 -0
- package/src/components/Aggregate/Aggregate_Callback.res +273 -0
- package/src/components/Aggregate/Aggregate_Callback.res.mjs +208 -0
- package/src/components/Api/ApiAllowedStatesHelpers.res +19 -0
- package/src/components/Api/ApiAllowedStatesHelpers.res.mjs +16 -0
- package/src/components/Api/ApiNoApiHelpers.res +13 -0
- package/src/components/Api/ApiNoApiHelpers.res.mjs +29 -0
- package/src/components/Api/Api_Builder.res +40 -0
- package/src/components/Api/Api_Builder.res.mjs +33 -0
- package/src/components/Api/Api_Naming.res +92 -0
- package/src/components/Api/Api_Naming.res.mjs +103 -0
- package/src/components/Api/Api_Operations.res +13 -0
- package/src/components/Api/Api_Operations.res.mjs +12 -0
- package/src/components/Api/GraphQL_FragmentGenerator.res +612 -0
- package/src/components/Api/GraphQL_FragmentGenerator.res.mjs +503 -0
- package/src/components/Api/GraphQL_SchemaInspector.res +156 -0
- package/src/components/Api/GraphQL_SchemaInspector.res.mjs +123 -0
- package/src/components/Api/GraphQL_Stitcher.res +271 -0
- package/src/components/Api/GraphQL_Stitcher.res.mjs +229 -0
- package/src/components/Api/MCP_SchemaGenerator.res +185 -0
- package/src/components/Api/MCP_SchemaGenerator.res.mjs +146 -0
- package/src/components/Api/SchemaType.res +126 -0
- package/src/components/Api/SchemaType.res.mjs +143 -0
- package/src/components/Api/SuryToJsonSchema.res +142 -0
- package/src/components/Api/SuryToJsonSchema.res.mjs +210 -0
- package/src/components/AutomationSlice/AutomationSlice.res +39 -0
- package/src/components/AutomationSlice/AutomationSlice.res.mjs +24 -0
- package/src/components/AutomationSlice/AutomationSlice_Builder.res +207 -0
- package/src/components/AutomationSlice/AutomationSlice_Builder.res.mjs +123 -0
- package/src/components/AutomationSlice/AutomationSlice_Callback.res +212 -0
- package/src/components/AutomationSlice/AutomationSlice_Callback.res.mjs +189 -0
- package/src/components/Builder_Helpers.res +196 -0
- package/src/components/Builder_Helpers.res.mjs +142 -0
- package/src/components/Cloner.res +84 -0
- package/src/components/Cloner.res.mjs +88 -0
- package/src/components/CommandGenerator/CommandGenerator.res +54 -0
- package/src/components/CommandGenerator/CommandGenerator.res.mjs +15 -0
- package/src/components/CommandGenerator/CommandGenerator_Adapter.res +22 -0
- package/src/components/CommandGenerator/CommandGenerator_Adapter.res.mjs +2 -0
- package/src/components/CommandGenerator/CommandGenerator_Builder.res +70 -0
- package/src/components/CommandGenerator/CommandGenerator_Builder.res.mjs +68 -0
- package/src/components/CommandGenerator/CommandGenerator_Callback.res +191 -0
- package/src/components/CommandGenerator/CommandGenerator_Callback.res.mjs +161 -0
- package/src/components/CommandTopic/CommandTopic.res +79 -0
- package/src/components/CommandTopic/CommandTopic.res.mjs +68 -0
- package/src/components/CommandTopic/CommandTopic_Adapter.res +53 -0
- package/src/components/CommandTopic/CommandTopic_Adapter.res.mjs +2 -0
- package/src/components/CommandTopic/CommandTopic_Builder.res +146 -0
- package/src/components/CommandTopic/CommandTopic_Builder.res.mjs +127 -0
- package/src/components/CommandTopic/CommandTopic_Callback.res +38 -0
- package/src/components/CommandTopic/CommandTopic_Callback.res.mjs +49 -0
- package/src/components/CommandTopic/CommandTopic_Helpers.res +176 -0
- package/src/components/CommandTopic/CommandTopic_Helpers.res.mjs +195 -0
- package/src/components/CommandTopic/CommandTopic_Operations.res +40 -0
- package/src/components/CommandTopic/CommandTopic_Operations.res.mjs +49 -0
- package/src/components/Component.res +1 -0
- package/src/components/Component.res.mjs +34 -0
- package/src/components/Component.resi +1 -0
- package/src/components/Counter/Counter.res +47 -0
- package/src/components/Counter/Counter.res.mjs +55 -0
- package/src/components/Counter/Counter_Adapter.res +18 -0
- package/src/components/Counter/Counter_Adapter.res.mjs +2 -0
- package/src/components/Counter/Counter_Builder.res +142 -0
- package/src/components/Counter/Counter_Builder.res.mjs +112 -0
- package/src/components/Counter/Counter_Callback.res +94 -0
- package/src/components/Counter/Counter_Callback.res.mjs +70 -0
- package/src/components/Counter/Counter_Operations.res +70 -0
- package/src/components/Counter/Counter_Operations.res.mjs +91 -0
- package/src/components/Dcb/Dcb_Builder.res +971 -0
- package/src/components/Dcb/Dcb_Builder.res.mjs +572 -0
- package/src/components/DcbEventLog/DcbEventLog.res +43 -0
- package/src/components/DcbEventLog/DcbEventLog.res.mjs +24 -0
- package/src/components/DcbEventLog/DcbEventLog_Adapter.res +57 -0
- package/src/components/DcbEventLog/DcbEventLog_Adapter.res.mjs +2 -0
- package/src/components/DcbEventLog/DcbEventLog_Builder.res +72 -0
- package/src/components/DcbEventLog/DcbEventLog_Builder.res.mjs +67 -0
- package/src/components/DcbEventLog/DcbEventLog_Operations.res +160 -0
- package/src/components/DcbEventLog/DcbEventLog_Operations.res.mjs +121 -0
- package/src/components/EventCollector/EventCollector.res +34 -0
- package/src/components/EventCollector/EventCollector.res.mjs +9 -0
- package/src/components/EventCollector/EventCollector_Adapter.res +45 -0
- package/src/components/EventCollector/EventCollector_Adapter.res.mjs +2 -0
- package/src/components/EventCollector/EventCollector_Builder.res +91 -0
- package/src/components/EventCollector/EventCollector_Builder.res.mjs +64 -0
- package/src/components/EventLog/EventLog.res +27 -0
- package/src/components/EventLog/EventLog.res.mjs +13 -0
- package/src/components/EventLog/EventLog_Adapter.res +15 -0
- package/src/components/EventLog/EventLog_Adapter.res.mjs +2 -0
- package/src/components/EventLog/EventLog_Builder.res +65 -0
- package/src/components/EventLog/EventLog_Builder.res.mjs +57 -0
- package/src/components/EventLog/EventLog_Operations.res +209 -0
- package/src/components/EventLog/EventLog_Operations.res.mjs +202 -0
- package/src/components/EventLog/EventPublish_Callback.res +29 -0
- package/src/components/EventLog/EventPublish_Callback.res.mjs +32 -0
- package/src/components/EventMapper/EventMapper.res +72 -0
- package/src/components/EventMapper/EventMapper.res.mjs +54 -0
- package/src/components/EventMapper/EventMapper_Builder.res +128 -0
- package/src/components/EventMapper/EventMapper_Builder.res.mjs +81 -0
- package/src/components/EventMapper/EventMapper_Callback.res +323 -0
- package/src/components/EventMapper/EventMapper_Callback.res.mjs +231 -0
- package/src/components/EventTopic/EventTopic.res +69 -0
- package/src/components/EventTopic/EventTopic.res.mjs +50 -0
- package/src/components/EventTopic/EventTopic_Adapter.res +15 -0
- package/src/components/EventTopic/EventTopic_Adapter.res.mjs +2 -0
- package/src/components/EventTopic/EventTopic_Builder.res +53 -0
- package/src/components/EventTopic/EventTopic_Builder.res.mjs +46 -0
- package/src/components/EventTopic/EventTopic_Operations.res +37 -0
- package/src/components/EventTopic/EventTopic_Operations.res.mjs +39 -0
- package/src/components/Extension/Extension.res +32 -0
- package/src/components/Extension/Extension.res.mjs +9 -0
- package/src/components/Extension/Extension_Builder.res +82 -0
- package/src/components/Extension/Extension_Builder.res.mjs +57 -0
- package/src/components/Extension/Extension_Operations.res +203 -0
- package/src/components/Extension/Extension_Operations.res.mjs +154 -0
- package/src/components/ExtensionPoint/ExtensionPoint.res +49 -0
- package/src/components/ExtensionPoint/ExtensionPoint.res.mjs +25 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res +163 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Builder.res.mjs +113 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Callback.res +110 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Callback.res.mjs +76 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Operations.res +146 -0
- package/src/components/ExtensionPoint/ExtensionPoint_Operations.res.mjs +122 -0
- package/src/components/Heartbeat/Heartbeat.res +25 -0
- package/src/components/Heartbeat/Heartbeat.res.mjs +9 -0
- package/src/components/Heartbeat/Heartbeat_Adapter.res +14 -0
- package/src/components/Heartbeat/Heartbeat_Adapter.res.mjs +2 -0
- package/src/components/Heartbeat/Heartbeat_Builder.res +43 -0
- package/src/components/Heartbeat/Heartbeat_Builder.res.mjs +47 -0
- package/src/components/Heartbeat/Heartbeat_Callback.res +32 -0
- package/src/components/Heartbeat/Heartbeat_Callback.res.mjs +40 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice.res +34 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice.res.mjs +24 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res +98 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res.mjs +87 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res +191 -0
- package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res.mjs +175 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice.res +35 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice.res.mjs +24 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res +181 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Builder.res.mjs +137 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Callback.res +173 -0
- package/src/components/OutboundTranslationSlice/OutboundTranslationSlice_Callback.res.mjs +173 -0
- package/src/components/QueryDb/QueryDb.res +74 -0
- package/src/components/QueryDb/QueryDb.res.mjs +37 -0
- package/src/components/QueryDb/QueryDb_Adapter.res +78 -0
- package/src/components/QueryDb/QueryDb_Adapter.res.mjs +17 -0
- package/src/components/QueryDb/QueryDb_Builder.res +76 -0
- package/src/components/QueryDb/QueryDb_Builder.res.mjs +53 -0
- package/src/components/QueryDb/QueryDb_Callback.res +18 -0
- package/src/components/QueryDb/QueryDb_Callback.res.mjs +21 -0
- package/src/components/QueryDb/QueryDb_Operations.res +116 -0
- package/src/components/QueryDb/QueryDb_Operations.res.mjs +165 -0
- package/src/components/ReadModel/ReadModel.res +42 -0
- package/src/components/ReadModel/ReadModel.res.mjs +27 -0
- package/src/components/ReadModel/ReadModel_Builder.res +155 -0
- package/src/components/ReadModel/ReadModel_Builder.res.mjs +101 -0
- package/src/components/ReadModel/ReadModel_Callback.res +48 -0
- package/src/components/ReadModel/ReadModel_Callback.res.mjs +48 -0
- package/src/components/Scheduler/Scheduler.res +13 -0
- package/src/components/Scheduler/Scheduler.res.mjs +9 -0
- package/src/components/Scheduler/Scheduler_Adapter.res +13 -0
- package/src/components/Scheduler/Scheduler_Adapter.res.mjs +2 -0
- package/src/components/Scheduler/Scheduler_Builder.res +19 -0
- package/src/components/Scheduler/Scheduler_Builder.res.mjs +29 -0
- package/src/components/SideEffectHandler/SideEffectHandler.res +30 -0
- package/src/components/SideEffectHandler/SideEffectHandler.res.mjs +12 -0
- package/src/components/SideEffectHandler/SideEffectHandler_Builder.res +117 -0
- package/src/components/SideEffectHandler/SideEffectHandler_Builder.res.mjs +64 -0
- package/src/components/SideEffectHandler/SideEffectHandler_Callback.res +116 -0
- package/src/components/SideEffectHandler/SideEffectHandler_Callback.res.mjs +95 -0
- package/src/components/StateChangeSlice/StateChangeSlice.res +38 -0
- package/src/components/StateChangeSlice/StateChangeSlice.res.mjs +17 -0
- package/src/components/StateChangeSlice/StateChangeSlice_Builder.res +91 -0
- package/src/components/StateChangeSlice/StateChangeSlice_Builder.res.mjs +81 -0
- package/src/components/StateChangeSlice/StateChangeSlice_Callback.res +412 -0
- package/src/components/StateChangeSlice/StateChangeSlice_Callback.res.mjs +299 -0
- package/src/components/StateTopic.res +91 -0
- package/src/components/StateTopic.res.mjs +41 -0
- package/src/components/StateViewSlice/StateViewSlice.res +33 -0
- package/src/components/StateViewSlice/StateViewSlice.res.mjs +24 -0
- package/src/components/StateViewSlice/StateViewSlice_Builder.res +176 -0
- package/src/components/StateViewSlice/StateViewSlice_Builder.res.mjs +134 -0
- package/src/components/StateViewSlice/StateViewSlice_Callback.res +64 -0
- package/src/components/StateViewSlice/StateViewSlice_Callback.res.mjs +56 -0
- package/src/components/Task/Task.res +81 -0
- package/src/components/Task/Task.res.mjs +51 -0
- package/src/components/Task/Task_Adapter.res +31 -0
- package/src/components/Task/Task_Adapter.res.mjs +2 -0
- package/src/components/Task/Task_Builder.res +223 -0
- package/src/components/Task/Task_Builder.res.mjs +115 -0
- package/src/plugin/api/PluginBaseFragment.res +104 -0
- package/src/plugin/api/PluginBaseFragment.res.mjs +64 -0
- package/src/plugin/component/Plugin.res +100 -0
- package/src/plugin/component/Plugin.res.mjs +61 -0
- package/src/plugin/component/Plugin_Builder.res +1017 -0
- package/src/plugin/component/Plugin_Builder.res.mjs +608 -0
- package/src/plugin/component/Plugin_BuiltHook.res +141 -0
- package/src/plugin/component/Plugin_BuiltHook.res.mjs +39 -0
- package/src/plugin/component/Plugin_Callback.res +98 -0
- package/src/plugin/component/Plugin_Callback.res.mjs +55 -0
- package/src/plugin/component/Plugin_Helpers.res +1730 -0
- package/src/plugin/component/Plugin_Helpers.res.mjs +1010 -0
- package/src/plugin/component/Plugin_ResolverError.res +27 -0
- package/src/plugin/component/Plugin_ResolverError.res.mjs +21 -0
- package/src/plugin/component/Plugin_Structure.res +570 -0
- package/src/plugin/component/Plugin_Structure.res.mjs +458 -0
- package/src/plugin/component/Plugin_SubscriptionSchema.res +103 -0
- package/src/plugin/component/Plugin_SubscriptionSchema.res.mjs +71 -0
- package/src/plugin/component/SchemaWalker.res +164 -0
- package/src/plugin/component/SchemaWalker.res.mjs +183 -0
- package/src/plugin/connect/PluginConnectExtension_Builder.res +14 -0
- package/src/plugin/connect/PluginConnectExtension_Builder.res.mjs +36 -0
- package/src/plugin/connect/PluginConnectExtension_Mapping.res +76 -0
- package/src/plugin/connect/PluginConnectExtension_Mapping.res.mjs +89 -0
- package/src/plugin/connect/PluginExtensionPoint_Builder.res +39 -0
- package/src/plugin/connect/PluginExtensionPoint_Builder.res.mjs +33 -0
- package/src/plugin/connect/PluginExtensionPoint_Plugin.res +231 -0
- package/src/plugin/connect/PluginExtensionPoint_Plugin.res.mjs +353 -0
- package/src/plugin/lifecycle/PluginBehavior.res +250 -0
- package/src/plugin/lifecycle/PluginBehavior.res.mjs +391 -0
- package/src/plugin/lifecycle/PluginSpec.res +84 -0
- package/src/plugin/lifecycle/PluginSpec.res.mjs +148 -0
- package/src/plugin/lifecycle/PluginsProjection.res +154 -0
- package/src/plugin/lifecycle/PluginsProjection.res.mjs +230 -0
- package/src/plugin/lifecycle/PluginsReadModelSpec.res +66 -0
- package/src/plugin/lifecycle/PluginsReadModelSpec.res.mjs +58 -0
- package/src/util/AWS.res +7 -0
- package/src/util/AWS.res.mjs +20 -0
- package/src/util/CSV.res +27 -0
- package/src/util/CSV.res.mjs +56 -0
- package/src/util/CommandPublisher.res +133 -0
- package/src/util/CommandPublisher.res.mjs +161 -0
- package/src/util/CsvStream.res +39 -0
- package/src/util/CsvStream.res.mjs +42 -0
- package/src/util/EffectLogger.res +178 -0
- package/src/util/EffectLogger.res.mjs +171 -0
- package/src/util/FTP.res +69 -0
- package/src/util/FTP.res.mjs +101 -0
- package/src/util/FTPHandler.res +142 -0
- package/src/util/FTPHandler.res.mjs +136 -0
- package/src/util/Hash.res +1 -0
- package/src/util/Hash.res.mjs +10 -0
- package/src/util/Interstack.res +74 -0
- package/src/util/Interstack.res.mjs +126 -0
- package/src/util/Interstack.resi +25 -0
- package/src/util/LogFormat.res +222 -0
- package/src/util/LogFormat.res.mjs +257 -0
- package/src/util/Logger.res +196 -0
- package/src/util/Logger.res.mjs +238 -0
- package/src/util/Lru.res +51 -0
- package/src/util/Lru.res.mjs +59 -0
- package/src/util/Lru.resi +32 -0
- package/src/util/Metrics.res +32 -0
- package/src/util/Metrics.res.mjs +42 -0
- package/src/util/OutputFailsafeDeploytime.res +16 -0
- package/src/util/OutputFailsafeDeploytime.res.mjs +20 -0
- package/src/util/OutputFailsafeRuntime.res +6 -0
- package/src/util/OutputFailsafeRuntime.res.mjs +15 -0
- package/src/util/OutputLogger.res +9 -0
- package/src/util/OutputLogger.res.mjs +19 -0
- package/src/util/ResourceQuery.res +14 -0
- package/src/util/ResourceQuery.res.mjs +17 -0
- package/src/util/ResourceQueryRuntime.res +17 -0
- package/src/util/ResourceQueryRuntime.res.mjs +18 -0
- package/src/util/ScheduleOps.res +124 -0
- package/src/util/ScheduleOps.res.mjs +132 -0
- package/src/util/Util.res +12 -0
- package/src/util/Util.res.mjs +42 -0
- package/src/util/Util_Adapter.res +97 -0
- package/src/util/Util_Adapter.res.mjs +82 -0
- package/src/util/Util_AdapterRuntime.res +39 -0
- package/src/util/Util_AdapterRuntime.res.mjs +42 -0
- package/src/util/Util_Array.res +2 -0
- package/src/util/Util_Array.res.mjs +12 -0
- package/src/util/Util_Error.res +16 -0
- package/src/util/Util_Error.res.mjs +19 -0
- package/src/util/Util_Promise.res +67 -0
- package/src/util/Util_Promise.res.mjs +105 -0
- package/src/util/Util_Pulumi.res +35 -0
- package/src/util/Util_Pulumi.res.mjs +55 -0
- package/src/util/Util_Pulumi.resi +21 -0
- package/src/util/Util_QueryDb.res +14 -0
- package/src/util/Util_QueryDb.res.mjs +21 -0
- package/src/util/Util_QueryDbRuntime.res +11 -0
- package/src/util/Util_QueryDbRuntime.res.mjs +19 -0
- package/src/util/Util_ReadModel.res +2 -0
- package/src/util/Util_ReadModel.res.mjs +10 -0
- package/src/util/Util_StackRefs.res +24 -0
- package/src/util/Util_StackRefs.res.mjs +39 -0
- package/src/util/Validation.res +75 -0
- package/src/util/Validation.res.mjs +181 -0
- package/tests/.gitkeep +0 -0
- package/tests/IdentityTest.res +155 -0
- package/tests/IdentityTest.res.mjs +174 -0
- package/tests/admin/Platform_ComponentDefinitionsApiTest.res +237 -0
- package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +298 -0
- package/tests/admin/Platform_UIFragmentsApiTest.res +96 -0
- package/tests/admin/Platform_UIFragmentsApiTest.res.mjs +101 -0
- package/tests/aggregate/AggregateCallbackTest.res +81 -0
- package/tests/aggregate/AggregateCallbackTest.res.mjs +140 -0
- package/tests/aggregate/AggregateCausationTest.res +49 -0
- package/tests/aggregate/AggregateCausationTest.res.mjs +44 -0
- package/tests/aggregate/AggregateConflictTest.res +212 -0
- package/tests/aggregate/AggregateConflictTest.res.mjs +363 -0
- package/tests/aggregate/AggregateFixtures.res +177 -0
- package/tests/aggregate/AggregateFixtures.res.mjs +285 -0
- package/tests/aggregate/AggregateRejectionTest.res +139 -0
- package/tests/aggregate/AggregateRejectionTest.res.mjs +163 -0
- package/tests/api/ApiNoApiTest.res +62 -0
- package/tests/api/ApiNoApiTest.res.mjs +90 -0
- package/tests/api/GraphQL_StitcherTest.res +107 -0
- package/tests/api/GraphQL_StitcherTest.res.mjs +99 -0
- package/tests/api/SimpleTest.res +7 -0
- package/tests/api/SimpleTest.res.mjs +10 -0
- package/tests/api/SuryToJsonSchemaTest.res +405 -0
- package/tests/api/SuryToJsonSchemaTest.res.mjs +623 -0
- package/tests/commandgenerator/CommandGeneratorCallbackTest.res +128 -0
- package/tests/commandgenerator/CommandGeneratorCallbackTest.res.mjs +160 -0
- package/tests/commandgenerator/CommandGeneratorFixtures.res +139 -0
- package/tests/commandgenerator/CommandGeneratorFixtures.res.mjs +197 -0
- package/tests/commandtopic/CommandTopicCallbackFixtures.res +87 -0
- package/tests/commandtopic/CommandTopicCallbackFixtures.res.mjs +152 -0
- package/tests/commandtopic/CommandTopicCallbackTest.res +66 -0
- package/tests/commandtopic/CommandTopicCallbackTest.res.mjs +106 -0
- package/tests/commandtopic/CommandTopicHelpersRejectionTest.res +83 -0
- package/tests/commandtopic/CommandTopicHelpersRejectionTest.res.mjs +109 -0
- package/tests/counter/CounterCallbackTest.res +83 -0
- package/tests/counter/CounterCallbackTest.res.mjs +140 -0
- package/tests/counter/CounterFixtures.res +57 -0
- package/tests/counter/CounterFixtures.res.mjs +67 -0
- package/tests/dcb/DcbDecodeTest.res +122 -0
- package/tests/dcb/DcbDecodeTest.res.mjs +194 -0
- package/tests/dcb/DcbEventLogOperationsTest.res +195 -0
- package/tests/dcb/DcbEventLogOperationsTest.res.mjs +268 -0
- package/tests/dcb/DcbFixtures.res +422 -0
- package/tests/dcb/DcbFixtures.res.mjs +534 -0
- package/tests/dcb/DcbScopeInferenceTest.res +242 -0
- package/tests/dcb/DcbScopeInferenceTest.res.mjs +480 -0
- package/tests/dcb/DcbStateChangeSliceTest.res +362 -0
- package/tests/dcb/DcbStateChangeSliceTest.res.mjs +546 -0
- package/tests/dcb/DcbTagTest.res +978 -0
- package/tests/dcb/DcbTagTest.res.mjs +867 -0
- package/tests/dcb/DcbValidationTest.res +349 -0
- package/tests/dcb/DcbValidationTest.res.mjs +476 -0
- package/tests/eventlog/EventLogFixtures.res +113 -0
- package/tests/eventlog/EventLogFixtures.res.mjs +166 -0
- package/tests/eventlog/EventLogOperationsTest.res +96 -0
- package/tests/eventlog/EventLogOperationsTest.res.mjs +192 -0
- package/tests/eventlog/EventLogRetryTest.res +121 -0
- package/tests/eventlog/EventLogRetryTest.res.mjs +171 -0
- package/tests/eventmapper/EventMapperCallbackTest.res +134 -0
- package/tests/eventmapper/EventMapperCallbackTest.res.mjs +141 -0
- package/tests/eventmapper/EventMapperFixtures.res +255 -0
- package/tests/eventmapper/EventMapperFixtures.res.mjs +440 -0
- package/tests/eventmapper/EventMapperTest.res +53 -0
- package/tests/eventmapper/EventMapperTest.res.mjs +83 -0
- package/tests/eventtopic/EventTopicFixtures.res +36 -0
- package/tests/eventtopic/EventTopicFixtures.res.mjs +65 -0
- package/tests/eventtopic/EventTopicOperationsTest.res +48 -0
- package/tests/eventtopic/EventTopicOperationsTest.res.mjs +71 -0
- package/tests/extensionpoint/ExtensionPointCallbackTest.res +84 -0
- package/tests/extensionpoint/ExtensionPointCallbackTest.res.mjs +94 -0
- package/tests/extensionpoint/ExtensionPointFixtures.res +173 -0
- package/tests/extensionpoint/ExtensionPointFixtures.res.mjs +205 -0
- package/tests/extensionpoint/ExtensionPointOperationsTest.res +261 -0
- package/tests/extensionpoint/ExtensionPointOperationsTest.res.mjs +304 -0
- package/tests/ftp/FTPTest.res +64 -0
- package/tests/ftp/FTPTest.res.mjs +88 -0
- package/tests/logger/LogFormatTest.res +348 -0
- package/tests/logger/LogFormatTest.res.mjs +309 -0
- package/tests/message/MessageTest.res +95 -0
- package/tests/message/MessageTest.res.mjs +93 -0
- package/tests/message/MetaEnvelopeTest.res +200 -0
- package/tests/message/MetaEnvelopeTest.res.mjs +188 -0
- package/tests/plugin/ManifestVisibilityTest.res +137 -0
- package/tests/plugin/ManifestVisibilityTest.res.mjs +205 -0
- package/tests/plugin/PluginSpecExperiment.res +13 -0
- package/tests/plugin/PluginSpecExperiment.res.mjs +31 -0
- package/tests/plugin/PluginStructureTest.res +298 -0
- package/tests/plugin/PluginStructureTest.res.mjs +388 -0
- package/tests/plugin/PluginVersionTest.res +34 -0
- package/tests/plugin/PluginVersionTest.res.mjs +30 -0
- package/tests/plugin/SchemaWalkerTest.res +115 -0
- package/tests/plugin/SchemaWalkerTest.res.mjs +160 -0
- package/tests/plugin/StateChangeSlice/PsPlaceOrder.res +24 -0
- package/tests/plugin/StateChangeSlice/PsPlaceOrder.res.mjs +62 -0
- package/tests/plugin/StateChangeSlice/PsShipOrder.res +29 -0
- package/tests/plugin/StateChangeSlice/PsShipOrder.res.mjs +69 -0
- package/tests/plugin/StateViewSlice/PsAnnotatedView.res +24 -0
- package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +94 -0
- package/tests/plugin/StateViewSlice/PsAvailableProductsView.res +18 -0
- package/tests/plugin/StateViewSlice/PsAvailableProductsView.res.mjs +69 -0
- package/tests/plugin/StateViewSlice/PsCustomersView.res +22 -0
- package/tests/plugin/StateViewSlice/PsCustomersView.res.mjs +69 -0
- package/tests/plugin/StateViewSlice/PsOrdersView.res +20 -0
- package/tests/plugin/StateViewSlice/PsOrdersView.res.mjs +81 -0
- package/tests/poc/StructuralSubtypingPoc.res +211 -0
- package/tests/poc/StructuralSubtypingPoc.res.mjs +61 -0
- package/tests/querydb/QueryDbFixtures.res +65 -0
- package/tests/querydb/QueryDbFixtures.res.mjs +135 -0
- package/tests/querydb/QueryDbOperationsTest.res +94 -0
- package/tests/querydb/QueryDbOperationsTest.res.mjs +168 -0
- package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res +56 -0
- package/tests/sideeffecthandler/SideEffectHandlerCallbackTest.res.mjs +77 -0
- package/tests/sideeffecthandler/SideEffectHandlerFixtures.res +96 -0
- package/tests/sideeffecthandler/SideEffectHandlerFixtures.res.mjs +139 -0
- package/tests/util/CsvStreamTest.res +54 -0
- package/tests/util/CsvStreamTest.res.mjs +51 -0
- package/tests/util/LruTest.res +73 -0
- package/tests/util/LruTest.res.mjs +105 -0
- package/tests/util/MetricsTest.res +36 -0
- package/tests/util/MetricsTest.res.mjs +53 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as Stdlib_Dict from "@rescript/runtime/lib/es6/Stdlib_Dict.js";
|
|
4
|
+
import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output.res.mjs";
|
|
5
|
+
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
6
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
7
|
+
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
8
|
+
import * as Task$ReventlessCore from "./Task.res.mjs";
|
|
9
|
+
import * as Logger$ReventlessCore from "../../util/Logger.res.mjs";
|
|
10
|
+
import * as Aggregate$ReventlessCore from "../Aggregate/Aggregate.res.mjs";
|
|
11
|
+
import * as Component$ReventlessCore from "../Component.res.mjs";
|
|
12
|
+
import * as Util_Promise$ReventlessCore from "../../util/Util_Promise.res.mjs";
|
|
13
|
+
import * as ComponentType$ReventlessCore from "../../ComponentType.res.mjs";
|
|
14
|
+
|
|
15
|
+
let log = Logger$ReventlessCore.fromEnv();
|
|
16
|
+
|
|
17
|
+
function pascalCase(s) {
|
|
18
|
+
return s.split("-").flatMap(p => p.split("_")).filter(p => p.length > 0).map(p => p.slice(0, 1).toUpperCase() + p.slice(1, p.length)).join("");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function Make(Spec) {
|
|
22
|
+
return RuntimeEnvironment => (EventCollectorChannel => (EventCollectorRuntimeBuilder => (TaskRuntimeBuilder => (TaskBucket => (SpecificSideEffectHandler => {
|
|
23
|
+
let make = (queryBucketName, scheduler, schedulerRoleUrn, publishToAggregates, queryEngine, resourceNaming, allAggregates, opts) => Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(Task$ReventlessCore.componentType), Spec.name, (extra, extra$1) => {
|
|
24
|
+
let opts_parent = Component$ReventlessCore.toPulumiResource(extra);
|
|
25
|
+
let opts = {
|
|
26
|
+
parent: opts_parent
|
|
27
|
+
};
|
|
28
|
+
let allCommandTopics = Aggregate$ReventlessCore.allCommandTopics(allAggregates);
|
|
29
|
+
let publishToAggregatesQueueUrls = Stdlib_Dict.mapValues(allAggregates, agg => Output$Pulumi.flatMap(agg.commandTopic, ct => {
|
|
30
|
+
let r = ct.resources[0];
|
|
31
|
+
if (r !== undefined) {
|
|
32
|
+
return r.id;
|
|
33
|
+
} else {
|
|
34
|
+
return Pulumi.output("");
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
let publishCommands = (aggregateName, cmdJsons) => Stdlib_Option.getOrThrow(publishToAggregates[aggregateName], undefined)(cmdJsons);
|
|
38
|
+
let config = Spec.setup(queryEngine, queryBucketName, opts);
|
|
39
|
+
let sideEffectHandler = Stdlib_Option.map(config.sideEffects, sideEffects => SpecificSideEffectHandler.make(extra$1, sideEffects, Aggregate$ReventlessCore.allEventTopics(allAggregates), allCommandTopics, undefined, queryEngine, scheduler, resourceNaming, undefined, undefined, opts));
|
|
40
|
+
let taskActionsHandler = (taskActions, operations) => Util_Promise$ReventlessCore.toUnit(Promise.all(taskActions.map(async taskAction => {
|
|
41
|
+
switch (taskAction.TAG) {
|
|
42
|
+
case "PublishCommands" :
|
|
43
|
+
return await publishCommands(taskAction._0, taskAction._1);
|
|
44
|
+
case "CreateSchedule" :
|
|
45
|
+
if (operations !== undefined) {
|
|
46
|
+
return await operations.createSchedule(taskAction._0);
|
|
47
|
+
} else {
|
|
48
|
+
return log.info("Task", undefined, "No SideEffectHandler to create schedule");
|
|
49
|
+
}
|
|
50
|
+
case "DeleteSchedule" :
|
|
51
|
+
if (operations !== undefined) {
|
|
52
|
+
return await operations.deleteSchedule(taskAction._0);
|
|
53
|
+
} else {
|
|
54
|
+
return log.info("Task", undefined, "No SideEffectHandler to delete schedule");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
})));
|
|
58
|
+
let createHandler = (sideEffectHandler, callback) => {
|
|
59
|
+
let handler = TaskBucket.makeHandler(callback);
|
|
60
|
+
if (sideEffectHandler !== undefined) {
|
|
61
|
+
return Component$ReventlessCore.operations(Primitive_option.valFromOption(sideEffectHandler)).apply(operations => (async (event, context) => {
|
|
62
|
+
let taskActions = await handler(event, context);
|
|
63
|
+
return await taskActionsHandler(taskActions, operations);
|
|
64
|
+
}));
|
|
65
|
+
} else {
|
|
66
|
+
return Pulumi.output(async (event, context) => {
|
|
67
|
+
let taskActions = await handler(event, context);
|
|
68
|
+
return await taskActionsHandler(taskActions, undefined);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
let schedulerConfig = Stdlib_Option.flatMap(sideEffectHandler, seh => {
|
|
73
|
+
let sehOutputs = Component$ReventlessCore.outputs(seh);
|
|
74
|
+
return Stdlib_Option.map(sehOutputs.eventCollector.resources[0], r => ({
|
|
75
|
+
schedulerRoleUrn: schedulerRoleUrn,
|
|
76
|
+
targetUrn: r.urn,
|
|
77
|
+
targetName: r.name
|
|
78
|
+
}));
|
|
79
|
+
});
|
|
80
|
+
let bucketNames = Stdlib_Option.map(config.buckets, buckets => Object.fromEntries(buckets.map(bucketSpec => {
|
|
81
|
+
let bucketName = Stdlib_Option.getOr(bucketSpec.bucketName, "Bucket");
|
|
82
|
+
let bucketStem = Stdlib_Option.mapOr(bucketSpec.bucketName, "", pascalCase);
|
|
83
|
+
let name = extra$1 + bucketStem + "Bucket";
|
|
84
|
+
let bucket = TaskBucket.make(name, opts);
|
|
85
|
+
let opts_parent = bucket.parts;
|
|
86
|
+
let opts$1 = {
|
|
87
|
+
parent: opts_parent
|
|
88
|
+
};
|
|
89
|
+
Stdlib_Option.forEach(bucketSpec.callback, callback => TaskRuntimeBuilder.forBucketCallback(createHandler(sideEffectHandler, callback), none => TaskBucket.connect(name, bucket, bucketSpec.bucketMode, allCommandTopics, none, opts$1), 4096, 600, bucketStem, Spec.moduleUrl, publishToAggregatesQueueUrls, schedulerConfig, extra));
|
|
90
|
+
return [
|
|
91
|
+
bucketName,
|
|
92
|
+
bucket.resources[0].id
|
|
93
|
+
];
|
|
94
|
+
})));
|
|
95
|
+
let sideEffectSources = Stdlib_Option.map(config.sideEffects, sideEffect => sideEffect.map(SideEffect => SideEffect.Source.name));
|
|
96
|
+
return Component$ReventlessCore.setOutputs(extra, {
|
|
97
|
+
name: extra$1,
|
|
98
|
+
bucketNames: bucketNames,
|
|
99
|
+
sideEffectSources: sideEffectSources
|
|
100
|
+
});
|
|
101
|
+
}, opts);
|
|
102
|
+
return {
|
|
103
|
+
Spec: Spec,
|
|
104
|
+
make: make,
|
|
105
|
+
outputs: Component$ReventlessCore.outputs
|
|
106
|
+
};
|
|
107
|
+
})))));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export {
|
|
111
|
+
log,
|
|
112
|
+
pascalCase,
|
|
113
|
+
Make,
|
|
114
|
+
}
|
|
115
|
+
/* log Not a pure module */
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
open ReventlessInfra.Api
|
|
2
|
+
|
|
3
|
+
let adminAuth: Reventless.ReadModel.authorization = {
|
|
4
|
+
tableName: "Plugin",
|
|
5
|
+
group: "Admin",
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Fields present on `PluginsReadModelSpec.state` for projection/storage purposes
|
|
9
|
+
// but intentionally absent from the public GraphQL surface. Shared with
|
|
10
|
+
// `Platform_Admin_Structure` so the schema announced via `Platform_ComponentDefinitions`
|
|
11
|
+
// stays aligned with the SDL — otherwise AutoUI generates list-view queries
|
|
12
|
+
// for fields the server doesn't expose and every Plugin row fails to load.
|
|
13
|
+
let pluginExcludeFields: array<string> = [
|
|
14
|
+
"eventCollector",
|
|
15
|
+
"extensionPointNames",
|
|
16
|
+
"extensionNames",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
// Additional fields the SDL exposes but the Plugin list view should NOT
|
|
20
|
+
// surface — they're option-of-nested-object types (e.g. apiSchemaFragment,
|
|
21
|
+
// uiFragments, structure) which AutoUI currently renders as scalar columns
|
|
22
|
+
// and queries without a sub-selection, failing schema validation. Other
|
|
23
|
+
// callers (host-shell's Platform_ComponentDefinitions / Platform_UIFragments)
|
|
24
|
+
// keep querying them via dedicated fields and resolver paths.
|
|
25
|
+
let pluginUIOnlyExcludeFields: array<string> = pluginExcludeFields->Array.concat([
|
|
26
|
+
"apiSchemaFragment",
|
|
27
|
+
"uiFragments",
|
|
28
|
+
"structure",
|
|
29
|
+
])
|
|
30
|
+
|
|
31
|
+
// Admin read-model query entries are generated from each spec the same way
|
|
32
|
+
// ordinary read models are (Plugin_Builder.res): `subIdField` flows from the
|
|
33
|
+
// spec's `subIdConfig` and `indexQueries` from `config.indexes`, so
|
|
34
|
+
// `GraphQL_FragmentGenerator` emits the matching `<single>Items` (composite key)
|
|
35
|
+
// and `<single>By<Index>` (GSI) fields automatically — in lockstep with the
|
|
36
|
+
// shared resolver layer (`QueryDbResolvers_{AppSync,GraphQL}`). This closes the
|
|
37
|
+
// admin/ordinary parity gap: an admin read model that declares a sub-id or an
|
|
38
|
+
// `@index` now gets the same auto-generated GraphQL surface ordinary read models
|
|
39
|
+
// do, instead of just `single` + `list`.
|
|
40
|
+
let indexQueriesOfConfig = (config: Reventless.ReadModel.config) =>
|
|
41
|
+
config.indexes->Array.length > 0 ? Some(config.indexes) : None
|
|
42
|
+
|
|
43
|
+
// The UIFragmentRegistry read model is queried exclusively via the explicit
|
|
44
|
+
// flat `Platform_UIFragments: [Platform_UIFragmentEntry!]!` field declared in
|
|
45
|
+
// `Platform_UIFragmentsApi.res` (and resolved by `Platform_UIFragments_Lambda.res`
|
|
46
|
+
// on AWS / the seeded QueryDb in-memory). Reintroducing an auto-generated
|
|
47
|
+
// connection field here collides with that name on SDL composition.
|
|
48
|
+
let queryEntries: array<querySchemaEntry> = [
|
|
49
|
+
{
|
|
50
|
+
// The read-model `Spec.name` is "Plugins" (plural — the read-model cluster
|
|
51
|
+
// is named after the list, see `PluginsReadModelSpec`), while the GraphQL
|
|
52
|
+
// return type stays singular as `Platform_Plugin`. `specName` is what
|
|
53
|
+
// `QueryDbResolvers_{AppSync,GraphQL}.make` looks up in
|
|
54
|
+
// `queryFieldNamesRegistry`, so it must match `Spec.name`, not the
|
|
55
|
+
// singular form derived from `returnTypeName`.
|
|
56
|
+
specName: PluginsReadModelSpec.name,
|
|
57
|
+
singleFieldName: Api_Naming.adminField(~name="Plugin"),
|
|
58
|
+
listFieldName: Api_Naming.adminField(~name="Plugins"),
|
|
59
|
+
returnTypeName: Api_Naming.adminField(~name="Plugin"),
|
|
60
|
+
stateSchema: PluginsReadModelSpec.stateSchema->S.castToUnknown,
|
|
61
|
+
authorization: Some(adminAuth),
|
|
62
|
+
excludeFields: pluginExcludeFields,
|
|
63
|
+
subIdField: ?PluginsReadModelSpec.subIdConfig->Option.map((c: Reventless.ReadModel.subIdConfig<_>) => c.subIdField),
|
|
64
|
+
indexQueries: ?indexQueriesOfConfig(PluginsReadModelSpec.config),
|
|
65
|
+
},
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
// Plugin aggregate admin mutations — derived statically from PluginSpec.command,
|
|
69
|
+
// so the generated SDL contains one field per non-`@noApi` variant carrying that
|
|
70
|
+
// variant's command fields as args. Since the admin commands are name-keyed and
|
|
71
|
+
// version-scoped (`Activate(version)` / `Deactivate(version)` / `Retire(version)`),
|
|
72
|
+
// the fields are e.g. `Platform_Plugin_Activate(id: ID!, _0: String!): CommandResult!`
|
|
73
|
+
// (`id` = plugin name = aggregate instance; `_0` = target version). `Retire` is
|
|
74
|
+
// API-exposed (manual archive, §2.5). Internal-protocol variants (`Heartbeat`,
|
|
75
|
+
// `Connect`, `Disconnect`, `ReportIncompatibility`) carry `@noApi` and are filtered
|
|
76
|
+
// out by `ApiNoApiHelpers.filterNoApiVariants`. The same `commandSchema`-driven
|
|
77
|
+
// entry feeds the MCP tool generator, so the MCP tools gain the version arg and
|
|
78
|
+
// the `Plugin_Retire` tool automatically.
|
|
79
|
+
//
|
|
80
|
+
// The matching resolver wiring (registry population + `mutationResolverHook` /
|
|
81
|
+
// `mutationBindHook` firing for the in-memory and AWS auto-flow) lives in
|
|
82
|
+
// `Plugin_Helpers.registerAdminAggregateMutations`, invoked from
|
|
83
|
+
// `Platform_Admin.construct` over the `~aggregates` parameter. Both paths derive
|
|
84
|
+
// the same field names so the SDL and the resolvers stay aligned.
|
|
85
|
+
let pluginAggregateMutationEntries: array<mutationSchemaEntry> = {
|
|
86
|
+
let commandSchema = PluginSpec.commandSchema->S.castToUnknown
|
|
87
|
+
let constructorNames = Reventless.DcbTag.extractAllVariantNames(PluginSpec.commandSchema)
|
|
88
|
+
let filteredConstructorNames =
|
|
89
|
+
ApiNoApiHelpers.filterNoApiVariants(constructorNames, commandSchema)
|
|
90
|
+
let fieldNames =
|
|
91
|
+
filteredConstructorNames->Array.map(cname =>
|
|
92
|
+
Api_Naming.adminField(~name=PluginSpec.name ++ "_" ++ cname)
|
|
93
|
+
)
|
|
94
|
+
if fieldNames->Array.length === 0 {
|
|
95
|
+
[]
|
|
96
|
+
} else {
|
|
97
|
+
[
|
|
98
|
+
{
|
|
99
|
+
ReventlessInfra.Api.fieldNames,
|
|
100
|
+
commandSchema,
|
|
101
|
+
},
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
4
|
+
import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
|
|
5
|
+
import * as Api_Naming$ReventlessCore from "../../components/Api/Api_Naming.res.mjs";
|
|
6
|
+
import * as PluginSpec$ReventlessCore from "../lifecycle/PluginSpec.res.mjs";
|
|
7
|
+
import * as ApiNoApiHelpers$ReventlessCore from "../../components/Api/ApiNoApiHelpers.res.mjs";
|
|
8
|
+
import * as PluginsReadModelSpec$ReventlessCore from "../lifecycle/PluginsReadModelSpec.res.mjs";
|
|
9
|
+
|
|
10
|
+
let adminAuth = {
|
|
11
|
+
tableName: "Plugin",
|
|
12
|
+
group: "Admin"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
let pluginExcludeFields = [
|
|
16
|
+
"eventCollector",
|
|
17
|
+
"extensionPointNames",
|
|
18
|
+
"extensionNames"
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
let pluginUIOnlyExcludeFields = pluginExcludeFields.concat([
|
|
22
|
+
"apiSchemaFragment",
|
|
23
|
+
"uiFragments",
|
|
24
|
+
"structure"
|
|
25
|
+
]);
|
|
26
|
+
|
|
27
|
+
function indexQueriesOfConfig(config) {
|
|
28
|
+
if (config.indexes.length !== 0) {
|
|
29
|
+
return config.indexes;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let queryEntries = [{
|
|
34
|
+
singleFieldName: Api_Naming$ReventlessCore.adminField("Plugin"),
|
|
35
|
+
listFieldName: Api_Naming$ReventlessCore.adminField("Plugins"),
|
|
36
|
+
returnTypeName: Api_Naming$ReventlessCore.adminField("Plugin"),
|
|
37
|
+
stateSchema: PluginsReadModelSpec$ReventlessCore.stateSchema,
|
|
38
|
+
specName: PluginsReadModelSpec$ReventlessCore.name,
|
|
39
|
+
authorization: adminAuth,
|
|
40
|
+
excludeFields: pluginExcludeFields,
|
|
41
|
+
subIdField: Stdlib_Option.map(undefined, c => c.subIdField),
|
|
42
|
+
indexQueries: indexQueriesOfConfig(PluginsReadModelSpec$ReventlessCore.config)
|
|
43
|
+
}];
|
|
44
|
+
|
|
45
|
+
let constructorNames = DcbTag$Reventless.extractAllVariantNames(PluginSpec$ReventlessCore.commandSchema);
|
|
46
|
+
|
|
47
|
+
let filteredConstructorNames = ApiNoApiHelpers$ReventlessCore.filterNoApiVariants(constructorNames, PluginSpec$ReventlessCore.commandSchema);
|
|
48
|
+
|
|
49
|
+
let fieldNames = filteredConstructorNames.map(cname => Api_Naming$ReventlessCore.adminField(PluginSpec$ReventlessCore.name + "_" + cname));
|
|
50
|
+
|
|
51
|
+
let pluginAggregateMutationEntries = fieldNames.length === 0 ? [] : [{
|
|
52
|
+
fieldNames: fieldNames,
|
|
53
|
+
commandSchema: PluginSpec$ReventlessCore.commandSchema
|
|
54
|
+
}];
|
|
55
|
+
|
|
56
|
+
export {
|
|
57
|
+
adminAuth,
|
|
58
|
+
pluginExcludeFields,
|
|
59
|
+
pluginUIOnlyExcludeFields,
|
|
60
|
+
indexQueriesOfConfig,
|
|
61
|
+
queryEntries,
|
|
62
|
+
pluginAggregateMutationEntries,
|
|
63
|
+
}
|
|
64
|
+
/* pluginUIOnlyExcludeFields Not a pure module */
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
let componentType = ComponentType.Plugin
|
|
2
|
+
|
|
3
|
+
type outputs = ReventlessInfra.Plugin.outputs
|
|
4
|
+
|
|
5
|
+
type t
|
|
6
|
+
type component = Component.t<t, outputs, unit>
|
|
7
|
+
|
|
8
|
+
module type T = {
|
|
9
|
+
type api
|
|
10
|
+
type role
|
|
11
|
+
let make: (
|
|
12
|
+
~name: string,
|
|
13
|
+
~heartbeatInterval: int,
|
|
14
|
+
~extensionPoints: array<module(ReventlessInfra.ExtensionPoint.T)>=?,
|
|
15
|
+
~extensions: array<module(ReventlessInfra.Extension.Blueprint)>=?,
|
|
16
|
+
~aggregates: array<module(ReventlessInfra.Aggregate.T with type api = api)>=?,
|
|
17
|
+
~readModels: array<
|
|
18
|
+
module(ReventlessInfra.ReadModel.T with type api = api and type role = role),
|
|
19
|
+
>=?,
|
|
20
|
+
~tasks: array<module(ReventlessInfra.Task.T)>=?,
|
|
21
|
+
~stateChangeSlices: array<module(ReventlessInfra.StateChangeSlice.T)>=?,
|
|
22
|
+
~stateViewSlices: array<module(ReventlessInfra.StateViewSlice.T)>=?,
|
|
23
|
+
~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>=?,
|
|
24
|
+
~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>=?,
|
|
25
|
+
~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>=?,
|
|
26
|
+
~uiFragments: Reventless.Plugin.uiFragmentManifest=?,
|
|
27
|
+
~pluginStructure: Reventless.Plugin.pluginStructure=?,
|
|
28
|
+
~opts: Pulumi.ComponentResource.options=?,
|
|
29
|
+
) => component
|
|
30
|
+
let makeAutoUIManifest: (
|
|
31
|
+
~remoteEntryUrl: string,
|
|
32
|
+
~name: string,
|
|
33
|
+
~pluginStructure: Reventless.Plugin.pluginStructure,
|
|
34
|
+
~readModelPositions: array<string>=?,
|
|
35
|
+
~aggregatePositions: array<string>=?,
|
|
36
|
+
) => Reventless.Plugin.uiFragmentManifest
|
|
37
|
+
let makePluginDefinition: (
|
|
38
|
+
~name: string,
|
|
39
|
+
~aggregates: array<module(ReventlessInfra.Aggregate.T with type api = api)>=?,
|
|
40
|
+
~readModels: array<module(ReventlessInfra.ReadModel.T with type api = api and type role = role)>=?,
|
|
41
|
+
~stateViewSlices: array<module(ReventlessInfra.StateViewSlice.T)>=?,
|
|
42
|
+
~stateChangeSlices: array<module(ReventlessInfra.StateChangeSlice.T)>=?,
|
|
43
|
+
~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>=?,
|
|
44
|
+
~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>=?,
|
|
45
|
+
~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>=?,
|
|
46
|
+
~extensions: array<module(ReventlessInfra.Extension.Blueprint)>=?,
|
|
47
|
+
~extensionPoints: array<module(ReventlessInfra.ExtensionPointMapping.Mapping)>=?,
|
|
48
|
+
) => Reventless.Plugin.pluginStructure
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let makeId = (name, version) => `${name}@${version}`
|
|
52
|
+
|
|
53
|
+
// Inverse of `makeId` for the GraphQL boundary. Internally a plugin id is
|
|
54
|
+
// `name@version` so the in-memory platform's plugin store can key by it, but
|
|
55
|
+
// the platform invariant is one version per plugin at a time — so anything
|
|
56
|
+
// crossing into the UI (routes, federation remote name, subscription
|
|
57
|
+
// payloads) gets the bare name. If the input has no `@`, returns it as-is.
|
|
58
|
+
let name = (id: string): string =>
|
|
59
|
+
id->String.split("@")->Array.get(0)->Option.getOr(id)
|
|
60
|
+
|
|
61
|
+
// Version segment of a plugin id (`name@version`). Empty string when the id
|
|
62
|
+
// carries no `@` (e.g. the synthetic admin plugin id).
|
|
63
|
+
let version = (id: string): string =>
|
|
64
|
+
id->String.split("@")->Array.get(1)->Option.getOr("")
|
|
65
|
+
|
|
66
|
+
// Compare two plugin version strings (e.g. "0.10.0-alpha.73"), newest-first:
|
|
67
|
+
// returns 1 when `a` is newer than `b`, -1 when older, 0 when equal. Separators
|
|
68
|
+
// (`.`, `-`, `+`) are normalised, then segments compare numerically when both
|
|
69
|
+
// sides are numeric and lexically otherwise — enough to pick the latest among
|
|
70
|
+
// the monotonically-increasing lerna versions this platform produces. Used by
|
|
71
|
+
// the admin manifest resolvers to enforce the one-version-per-plugin invariant
|
|
72
|
+
// when more than one version lingers in `Connected` state.
|
|
73
|
+
let compareVersions = (a: string, b: string): int => {
|
|
74
|
+
let parts = s => s->String.replaceRegExp(%re("/[-+]/g"), ".")->String.split(".")
|
|
75
|
+
let pa = parts(a)
|
|
76
|
+
let pb = parts(b)
|
|
77
|
+
let len = pa->Array.length > pb->Array.length ? pa->Array.length : pb->Array.length
|
|
78
|
+
let result = ref(0)
|
|
79
|
+
let i = ref(0)
|
|
80
|
+
while result.contents == 0 && i.contents < len {
|
|
81
|
+
let sa = pa->Array.get(i.contents)->Option.getOr("")
|
|
82
|
+
let sb = pb->Array.get(i.contents)->Option.getOr("")
|
|
83
|
+
switch (Int.fromString(sa), Int.fromString(sb)) {
|
|
84
|
+
| (Some(na), Some(nb)) =>
|
|
85
|
+
if na > nb {
|
|
86
|
+
result := 1
|
|
87
|
+
} else if na < nb {
|
|
88
|
+
result := -1
|
|
89
|
+
}
|
|
90
|
+
| _ =>
|
|
91
|
+
if sa > sb {
|
|
92
|
+
result := 1
|
|
93
|
+
} else if sa < sb {
|
|
94
|
+
result := -1
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
i := i.contents + 1
|
|
98
|
+
}
|
|
99
|
+
result.contents
|
|
100
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as Stdlib_Int from "@rescript/runtime/lib/es6/Stdlib_Int.js";
|
|
4
|
+
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
5
|
+
|
|
6
|
+
function makeId(name, version) {
|
|
7
|
+
return name + `@` + version;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function name(id) {
|
|
11
|
+
return Stdlib_Option.getOr(id.split("@")[0], id);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function version(id) {
|
|
15
|
+
return Stdlib_Option.getOr(id.split("@")[1], "");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function compareVersions(a, b) {
|
|
19
|
+
let parts = s => s.replace(/[-+]/g, ".").split(".");
|
|
20
|
+
let pa = parts(a);
|
|
21
|
+
let pb = parts(b);
|
|
22
|
+
let len = pa.length > pb.length ? pa.length : pb.length;
|
|
23
|
+
let result = 0;
|
|
24
|
+
let i = 0;
|
|
25
|
+
while (result === 0 && i < len) {
|
|
26
|
+
let sa = Stdlib_Option.getOr(pa[i], "");
|
|
27
|
+
let sb = Stdlib_Option.getOr(pb[i], "");
|
|
28
|
+
let match = Stdlib_Int.fromString(sa, undefined);
|
|
29
|
+
let match$1 = Stdlib_Int.fromString(sb, undefined);
|
|
30
|
+
let exit = 0;
|
|
31
|
+
if (match !== undefined && match$1 !== undefined) {
|
|
32
|
+
if (match > match$1) {
|
|
33
|
+
result = 1;
|
|
34
|
+
} else if (match < match$1) {
|
|
35
|
+
result = -1;
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
exit = 1;
|
|
39
|
+
}
|
|
40
|
+
if (exit === 1) {
|
|
41
|
+
if (sa > sb) {
|
|
42
|
+
result = 1;
|
|
43
|
+
} else if (sa < sb) {
|
|
44
|
+
result = -1;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
i = i + 1 | 0;
|
|
48
|
+
};
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let componentType = "Plugin";
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
componentType,
|
|
56
|
+
makeId,
|
|
57
|
+
name,
|
|
58
|
+
version,
|
|
59
|
+
compareVersions,
|
|
60
|
+
}
|
|
61
|
+
/* No side effect */
|