- Sequence has a new home: https://gitlab.com/sequence
- The namespace has been updated from
Reductech.Sequence
toSequence
- Added
EntityValidateRelations
- Added
Flatten
Major performance improvements.
- Changes to
EntityValidateRelations
#497 - Add a step to validate relations in an entity stream #494
- Create a
Flatten
step that recursively flattens entities #493 - Refactor Entities to be more performant #491
- Do not get args for EnterStep unless Trace logging is enabled #490
- Enable Constant Folding and specific step optimizations #489
- Use
ValueTask
instead ofTask
for performance #488 - There should be an error or warning if a user tries to change an injected variable #480
- Code completion for variable names #481
- Update antl docker image to latest in CI #501
- Update namespace and paths after move to Sequence group #499
EntityFormat
step now accepts arrays as input- Using empty blocks with
StringInterpolate
no longer throws errors - Updated
JsonSchema.Net
to3.2.0
- EntityFormat step should accept arrays as input #457
- StringInterpolate should accept empty blocks #458
- Null reference exception with creating a StepParameter #459
- Remove references to docs.reductech.io in the documentation #455
- DocumentationCreate RootUrl is not working #456
- Bump versions of external dependencies #460
The Log
step now has a Severity
parameter which allows logging Debug, Information, Warning and Error level log messages
New aliases:
GetLetter
forCharAtIndex
ConvertFileSize
forConvertSizeUnits
FormatDate
forDateToString
GetConnectorVersion
forGetConnectorInformation
ConsoleWrite
,WriteToConsole
forPrint
ProcessStart
,StartProcess
forRunExternalProcess
StrLen
forStringLength
Step parameter changes:
For
step- Made
Increment
optional with a default of 1 - Added
Do
alias forAction
- Made
For
parameter alias for Milliseconds inDelay
Steps renamed (breaking change):
Repeat
toClone
DoXTimes
toRepeat
- Enabled Source Link
- Enabled publish to Nuget.org including symbols
- Add TypeReferenceSchemaAttribute to enforce that entities returned from steps are used correctly #451
- Add additional step and parameter aliases #447
- Add severity parameter to Log step #449
- More helpful Error Messages for Common Compilation Errors #416
- Add a TryCatch Step #445
- Multiline string should ignore the first character if it is a newline #440
- Output from hash step should be hex string #450
- Parameter Aliases are not displayed properly in Monaco Editors #448
- You can now use
"""
to indicate a multiline string with no escapes.
"""
{
"Json" : "Value"
}
"""
- Entity Properties can now be accessed using dot notation
- <entity> = (foo: (bar: 1, baz: 2))
- Print <entity>.foo.bar
# Returns: 1
- Added code completion for entity property access by dot notation
- Entity type references now optionally have an associated schema which can be set by the steps which create entities and checked by steps which use those entities.
- SCL like
(foo: 1)['bar']
now results in an error when the SCL is validated, rather than when it's running
- Support inline json by allowing multiline stings which don't require quotes to escape #418
- Use dot notation for entity property access #432
- Steps which return Entities or Arrays of Entities with a fixed schema should make that schema available #275
- Add steps to convert between various units of measurement #394
- Transform should treat empty strings as missing properties. #411
- Transform should reorder properties to be in the same order as the schema #419
- Creating an entity from a dictionary sets the wrong indexes #428
Transform
can now round doubles to integers. This can be controlled with theRoundingPrecision
parameter.- Added
Round
Step to round doubles GenerateDocumentation
now takes aRootUri
parameter.
Steps whose outputs can be determined at compile time can now be folded into constants.
- Step Parameters can now have any number of
[MetadataAttribute]
which allows you to designate custom metadata about the step. - Added an extension method to get all step parameters and values in a sequence which will allow users to check the values being passed to marked parameters in a compiled sequence.
- Environment Variables can now be injected to sequences before compiling / running.
- Added a new
Reductech.Sequence.LanguageServer
project with Language Server features
- Transform step should automatically convert between ints and doubles #393
- Add Round step #392
- Move REST steps into the rest connector #386
- GenerateDocumentation should take a root URL for links. #391
- Improve Documentation Layout #407
- Add step for downloading files #385
- Enable Constant Folding #405
- Add a general metadata attribute that can be used to assign arbitrary values to step parameters #404
- Allow injection of environment variables into a sequence. #398
- Add a new project for Language Server features #380
- GenerateDocumentation should html encode markdown #387
- Cannot access elements of arrays #388
- Migrate RestSharp to latest release #376
- Reenable tests which use ConnectorManager #372
- Add more tests for Core #381
EDR is now Sequence. The following has changed:
- The GitLab group has moved to https://gitlab.com/reductech/sequence
- The root namespace is now
Reductech.Sequence
- The documentation site has moved to https://sequence.sh
Everything else is still the same - automation, simplified.
The project has now been updated to use .NET 6.
- Step input and output types now have a base type of
ISCLObject
- This enforces that all inputs and outputs are one of the following types:
- Unit
- SCLNull
- StringStream
- SCLBool
- SCLInt
- SCLDouble
- SCLDateTime
- SCLEnum
- SCLOneOf of ISCLObjects
- Array of ISCLObject
ArrayMap
can now map elements of one type to elements of another type.
- ArrayMap should have different input and output types #357
- Improve conversion of JsonElement to SCLObject #369
- Log and Print steps should use GetStringAsync rather than serialize on StringStreams #368
- BUG: ArrayFirst and ArrayLast only work for arrays of ints #356
- Rename EDR to Sequence #371
- Create type SCLObject to be the base type for all SCL return types #361
- Update mutation testing base image to .net 6 and remove stryker config #364
- Update to work with .net 6 #363
- Make GenerateDocumentation compatible with docusaurus #362
- Assigning a variable to an entity property should infer the type of the variable correctly #360
- GenerateDocumentation should set Directory to empty string rather than null for the root directory #358
We now use JSON Schema for Schemas.
Schemas are a way to ensure that your data has a particular structure, for example you can control which properties are present and what types they have.
CreateSchema
creates a schema from an array of entities.
The step will produce the most restrictive schema possible.
- CreateSchema [('Foo': 1), ('Foo': 2)]
| Log
Transform
tries to adjust entities so that they fit a schema.
This example transforms the 'Foo' value from a string to an integer.
- <schema> = FromJSON '{"type": "object", "properties": {"foo": {"type": "integer"}}}'
- <entities> = [('Foo': '1'), ('Foo': '2'), ('Foo': '3')]
- <results> = Transform <entities> <schema>
- <results> | ForEach | Log
You can provide additional arguments to control
Validate
ensures that every entity in an array exactly matches the schema
This example filters the entities to only those where 'Foo' is a multiple of 2.
You could change the Error Behavior to do act differently for elements which do not match.
- <schema> = FromJSON '{"type": "object", "properties": {"foo": {"type": "integer", "MultipleOf": 2}}}'
- <entities> = [('Foo': 1), ('Foo': 2), ('Foo': 3), ('Foo': 4)]
- <results> = Validate <entities> <schema> ErrorBehavior: 'Skip'
- <results> | ForEach | Log
The SDK now has steps for interacting with web/REST endpoints:
RESTGet
RESTPost
RESTPut
RESTPatch
RESTDelete
RESTOptions
- Added
CreateSchemaCoerced
Step for creating schemas from CSV data - Added
RESTGet
- Added
RESTPost
- Added
RESTPut
- Added
RESTPatch
- Added
RESTDelete
- Added
RESTOptions
- Added
Try
step - Removed
ArrayEvaluate
- Removed
EntityMap
- duplicate ofArrayMap
- Removed
If
- Renamed
ValueIf
toIf
Renamed the following steps and added additional aliases:
Step | New Name | Aliases |
---|---|---|
AppendString | StringAppend | AppendString |
CreateSchema | SchemaCreate | GenerateSchema, CreateSchema |
ElementAtIndex | ArrayElementAtIndex | ElementAtIndex, FromArray |
FindElement | ArrayFind | Find, FindElement |
FindLastSubstring | StringFindLast | LastIndexOfSubstring, FindLastInstance, FindLastSubstring |
FindSubstring | StringFind | IndexOfSubstring, FindInstance, FindSubstring |
GenerateDocumentation | DocumentationCreate | DocGen, GenerateDocumentation |
GetSubstring | StringSubstring | GetSubstring |
ReadStandardIn | StandardInRead | FromStandardIn, ReadStandardIn, FromStdIn, ReadStdIn, StdInRead |
RegexMatch | StringMatch | IsMatch, RegexMatch |
RegexReplace | StringReplace | RegexReplace |
WriteStandardError | StandardErrorWrite | ToStandardErr, WriteStandardErr, ToStdErr, WriteStdErr, StdErrWrite |
WriteStandardOut | StandardOutWrite | ToStandardOut, WriteStandardOut, ToStdOut, WriteStdOut, StdOutWrite |
- All renamed steps have an alias of the previous name, so there's no need to change SCL
- Added additional parameter and step aliases to make SCL more like natural language
- Many of the
Core
steps now have additional aliases. Some examples:
Step | Example |
---|---|
ArrayConcat | Combine Arrays: [[1, 2, 3], [4, 5, 6]] |
ArrayElementAtIndex | FromArray ['A', 'B', 'C'] GetElement: 1 |
ArrayFilter | Filter <MyCsvFile> Using: (<>['column1'] == 'TypeA') |
ArrayFind | Find In: ['a', 'b', 'c'] Item: 'a' |
ArrayLast | GetLastItem In: [1,2,3] |
ArrayTake | Take From: [1, 2, 3, 4, 5] Count: 3 |
EntityHasProperty | DoesEntity ('type': 'C', 'value': 1) Have: 'type' |
EntityMapProperties | RenameProperties In: [('a': 1), ('b': 1), ('c': 1)] To: ('value': ['a', 'b', 'c']) |
EntityRemoveProperty | Remove From: ('type': 'A', 'value': 1) Property: 'value' |
ForEach | ForEachItem In: [1, 2, 3] Do: (Log <item>) |
StringContains | DoesString 'hello there' Contain: 'ello' |
StringFind | FindInstance Of: 'ello' In: 'hello hello!' |
StringToCase | ChangeCase Of: 'string to change' To: 'Upper' |
EntityMapProperties
can now take an array of values for each property and will use the first value which is notnull
ValueIf
now returns the default value ofT
if the condition is false andElse
is not set.
- Arrays can now be defined as a comma-separated list, without using square brackets:
- Before:
ForEach Array: [1, 2, 3] Action: (Print <>)
- Now:
ForEach Array: 1, 2, 3 Action: (Print <>)
- Before:
- Assigning an array to a variable automatically evaluates that array.
- Brackets around steps are now optional in many cases:
- Instead of
- If (DoesDirectoryExist <ProcessingPath>) (DeleteItem <ProcessingPath>)
- You can now use
- If DoesDirectoryExist <ProcessingPath> Then: DeleteItem <ProcessingPath>
- Instead of
- Creating a Step Factory can now result in an error.
- IDynamicStepGenerator/CreateStepFactories should supplies a web connection and an external context
- Added
IDynamicStepGenerator
to allow dynamic step creation
- Allow arrays to be defined without square brackets #299
- Rename steps to adhere to the entity-action convention #350
- Add step and parameter aliases and SCL examples #352
- Add example of output for GenerateDocumentation step #288
- Add a SchemaCreateCoerced step #349
- Assigning an Array to a Variable should automatically Evaluate that Array #330
- Creating Step Factories should be able to return errors #344
- IDynamicStepGenerator CreateStepFactories should supply a web connection and a file system #342
- EntityMapProperties should be able to map several #340
- Use Json Schema instead of our Schema #332
- StateMonad should have a RestClientFactory instead of a RestClient #338
- Improve HTTP test framework #337
- Add REST Steps #335
- Make Adjustments to IStepFactory to support Dynamic Step Factories #334
- Create a way for connectors to generate steps dynamically based on Configuration #333
- Add a Try and Catch step #325
- Remove
If
and renameValueIf
toIf
#331 - Make brackets for steps passed as arguments optional #301
- Could not resolve variable when using ArrayEvaluate #327
- Variable does not have type Integer error when combining entities #328
- ArraySkip and ArrayTake don't work with some array types #326
- Cannot Create Entity from Configuration because Requirement cannot be Serialized #324
- Create Examples for all Steps #298
- Allow injecting variables into SCLExamples #351
- GenerateDocumentation should list steps in alphabetical order in all.md #348
- Rest Client Factory should use Text.Json for body serialization #347
- Create a way to generate analytics #346
- GenerateDocumentation should be able to see enums nested inside OneOfs #345
- IRestClientFactory should be part of IExternalContext #343
- Create more helper methods to deal with schemas #341
- Remove dependency on Newtonsoft.JSON #339
- When testing HTTP setups we should be able to check the method and resource #336
- Change 'SequenceId' to 'RunId' for consistency with the Orchestrator #329
-
Added new lambda syntax for steps which take a function as a parameter.
Instead of writing
Foreach [1,2,3] (Log <x>) <x>
you now writeForeach [1,2,3] (<x> => Log <x>)
orForeach [1,2,3] (Log <>)
-
Allowed Step Parameters to be Discriminated Unions. This allows a parameter to be e.g. either a name or an Id.
-
When accessing entity properties you can now use a dot to indicate a nested property
Instead of
(a:(b: 1))['a']['b']
you can now write(a:(b: 1))['a.b']
- Add Replace parameter to RegexReplace #295
- Add a shorthand notation for accessing entity properties #300
- Create a FormatEntity step which takes an entity and returns a nicely formatted string #318
- Add a step to create a Schema from an
Array of Entity
#317 - Allow discriminated unions as step parameters #312
- Add
ArrayFirst
andArrayLast
steps #302 - Create an
EntityGetProperties
step to return the names of all entity properties #274 - Add a way to use
EntityGetValue
when the key contains a dot #307 - Align
GetDocumentation
output with the current documentation #293 - Add step SCL examples to the documentation #294
- Add parameter position to output of
GetDocumentation
#296 - Formally use lambda functions for 'linq' steps #291
- Creating a step wrapper throws an exception for some steps #321
- Setting a OneOf parameter to a variable which was set from an entity value causes an error #315
- Setting a variable to a property of an entity does not always convert the type correctly #311
- ResultFailureException in NullableStepWrapper #309
- Verify Method does not have a Switch Label for Lambda Functions #306
- GetDocumentation enums directory should be enums #292
- Step properties should be allowed to be both Required and having a default value #322
- Change Entity Serialization so that property names are quoted #316
- WrapStep should take IRunnableStep not IStep #314
- Allow Step Parameters to be discriminated unions of arrays #313
- Add more step wrappers and step helper functions #310
- Create Helper methods to evaluate step parameters to reduce boiler plate code #308
- RequiredVersionAttribute should check the version of other software, not the connector #304
- Added
ArrayGroupBy
Step
- Added the automatic variable
<>
which can be used instead ofEntity
- Added
WithCheckLogLevel
extension method toICaseThatExecutes
allowing the verbosity of the test log messages to be changed
- Move ConnectorData and Settings to ConnectorManager #276
- GenerateDocumentation should return complete metadata for steps #273
- Add a shorthand for the entity automatic variable #271
- Create an ArrayGroupBy Step #272
- Improve error messages for type mismatches #268
- Passing array to a string parameter should not result in IntConstant error #269
- Comparison of ISCLObjects results in an Error #270
- Setting a variable to an enum value results in an error #267
- Prevent using the wrong constructor of StepFactoryStore #281
- EntityPropertyKey constructor should not split on dots #280
- Connector Settings Entity should have a nested Entity rather than a nested list #279
- Improve unit tests and increase code coverage #278
- Remove SCLSettings #277
- Remove SCLRunner.RunSequenceFromPathAsync method #264
- Change log level for non-terminating errors to trace #263
- Refactor SCLRunner.LogError as an extension for ILogger #265
- Create tests to improve coverage in commonly used classes #261
- Add tests for Errors #262
- Create integration tests for ExternalProcessRunner #260
- Exclude ExampleConnector from test coverage #259
- Added
EvaluateArray
RunSCL
Steps that that work with the file system and with structured data have been moved to separate connectors:
-
Moved to the FileSystem Connector
DirectoryCopy
DirectoryExists
DirectoryMove
CreateDirectory
FileCopy
FileExists
FileExtract
FileMove
FileRead
FileWrite
DeleteItem
PathCombine
-
Moved to the StructuredData Connector
FromConcordance
FromCSV
FromIDX
FromJson
FromJsonArray
ToConcordance
ToCSV
ToIDX
ToJson
ToJsonArray
ToJson
now formats output by default. This can be overriden by settingFormatOutput
to falseToJsonArray
now formats output by default. This can be overriden by settingFormatOutput
to false
- Connectors can be dynamically loaded at runtime
- Connector Settings now support plugins
Schema.AllowExtraProperties
changed toSchema.ExtraProperties
which can takeAllow
,Warn
,Remove
, orFail
- Change message log level for PluginLoadContext to debug #256
- Improve error messages when parsing SCL #221
- Plugins should automatically introduce requirements #254
- Add a helper method to get all Step Requirements to support the orchestrator #253
- Refactor Connector Settings #251
- Change Connector settings objects to support plugins #250
- Create an Evaluate Step to allow technicians to use arrays more than once #245
- Create a 'Run' step that runs another step and ignores the output #232
- Add a step to remove properties from an entity #248
- Allow tests to check final context #244
- Split File System steps into their own connector #239
- Split StructuredData steps into their own connector #240
- Specify parameter type in error messages #206
- EnforceSchema should print location when errors occur #237
- Add step to allow running scl files in a sequence #241
- Add a default date input/output format for schemas #236
- ToJson and ToJsonArray should format output #238
- Allow schemas to filter out extra properties #235
- Create a system for allowing plugins to inject external contexts #242
- It should be possible to load connectors as plugins to allow developers to create their own connectors #234
- ConvertToEntity throws StackOverflowException when converting nested entities #252
- Empty string in Entities are returning double quotes #247
- Serialized nested sequences should only have one dash at the start #229
- Allow DeserializeAndRun step cases to use a custom step factory #255
- Added
AssertEqual
GetSettings
- Create an AssertEquals Step #224
- Create a GetSettings step to allow technicians to create custom settings. #226
- Nest Step Factories and make them private to make autogenerated documentation more readable #200
- Using GetVariable in array results in could not infer type error #230
- Serialized steps inside arrays should have round brackets #228
- AssertEqual
Could not infer type
in some situations #227 - Bug: CreateEntity Serialize should bracket nested steps #225
- Bug: Null Reference Exception during SCL parsing #223
- Added
- GetApplicationVersion
- Create methods to convert Entities to Configuration, Requirement, and Version objects #218
- Add functionality to help with configuration and requirements. #217
- Create a GetApplicationVersion Step to help with logging #215
- EntityGetValue returns errors for boolean property values #219
- GetConnectorInformation throws exception when application is a single file #216
- Numerical operations do not work with doubles #213
- Added
- GetConnectorInformation
- It's now possible to interpolate strings using the
$
prefix
- <First> = "John"
- <Last> = "Jones"
- <Name> = $"{<First>} {<Last>}"
EntityGetValue
can now retrieve nested entities
- Add a step to get the current version of core or connector #211
- Add parameter aliases to GenerateDocumentation #210
- Allow String interpolation to make SCL easier to use #187
- Allow EntityGetValue to retrieve values of type other than string #208
- Make changes to support vs code extension #205
- Improve look and feel of the documentation #207
- Bug: Compare Operator cannot compare types other than integers #212
FromJson
now parses Json object and returns anEntity
ToJson
now takes anEntity
and returns a Json object string- Created
FromJsonArray
- Created
ToJsonArray
- Added
Hash
Step - Added DirectoryMove
- Added DirectoryCopy
- Added FileMove
- Added FileCopy
- Added
EntityCombine
step Print
renamed toLog
- Added
Print
which writes an entity to the console - Created
ReadStandardIn
step that returns a StringStream of data from the standard input - Created
WriteStandardOut
step that writes a StringStream to standard output - Added
RegexMatch
Step - Added
RegexReplace
Step
- All operators can now be chained
+
operator can now be used forSum
,StringConcatenate
, orEntityCombine
- The
+
operator now combines entities - Added
Sum
,Product
,Subtract
,Divide
,Modulo
Power
- Added
And
,Or
- Added
Equals
,NotEquals
,LessThan
,LessThanOrEqual
,GreaterThan
,GreaterThanOrEqual
- Removed
ApplyMathOperator
,ApplyBooleanOperator
,Compare
- Removed
with
keyword - Strings can be used to name entity properties in SCL
- Commas are now optional in SCL arrays
- Enabled nested entity access in SCL e.g.
<entity>['Property.Name.Multiplicity']
- Added Array access operator to SCL:
[1,2,3][0]
- Added Entity access operator to SCL:
(Property: 'Value')['Property']
- Added
DateInputFormat
andDateOutputFormat
toSchemaProperty
- Added
DefaultErrorBehaviour
toSchema
- Added
ErrorBehaviour
toSchemaProperty
IStateMonad
now implementsIAsyncDisposable
notIDisposable
IStateMonad
GetVariable
andSetVariable
are now Async- External context abstracted using https://github.com/PawelGerr/Thinktecture.Abstractions
- Logged messages now have the following properties:
Message
MessageParams
StepName
Location
SequenceInfo
- Additional log messages added at the start and end of each sequence
- StateMonad methods should be async and it should implement IAsyncDisposable #198
- Create ToJsonArray and FromJsonArray and change ToJson and FromJSon to produce/return single entities to make Json more intuitive for technicians #196
- StateMonad should more elegantly get rid of nested variables #197
- Use structured logging, so that technicians can more easily aggregate edr log information #195
- Make Testing Log level configurable to prevent exposure of secrets in CI #193
- Errors should have separate properties for StepName, and TextLocation #191
- Adjust logging in Core to make it easier to integrate with ELK stack #190
- Enable trace logging in more areas to make problems easier to diagnose #188
- Add a Hash step to Hash Strings so technicians can produce hashes for files #186
- Create steps to move and copy files and directories #185
- Allow abstraction of SQL Connections #184
- Rename
Print
toLog
and create a newPrint
step that prints to the console #182 - Create ReadStandardIn and WriteStandardOut to allow interaction with other console applications such as singer #180
- Allow Operator overloading and chaining to make SCL more intuitive for technicians #128
- Add RegexMatch and RegexReplace steps #177
- Add 'EntityCombine' step and with operator to allow easy entity modification #174
- Allow strings as entity property names to support multi-word names #175
- Make commas optional in arrays #176
- Allow nested property identifiers in entity declarations and entity access #173
- Allow Square brackets for array and entity access in SCL to make the language easier for technicians #172
- Add DateInputFormat and DateOutputFormat to SchemaProperty to make date handling easier for technicians #170
- Add ErrorBehaviour Property for schemas to let technicians configure the Error behaviour for individual properties #171
- Log Step should have StepName property logged #194
- Bug: Lists in configuration are not handled correctly #189
- Bug: Infix operators with steps are not serialized correctly #183
- Use external libraries for abstractions to aid testing and improve code coverage #181
- Logging should support NLog #201
- Catch InvalidOperationException in ExternalProcessReference dispose #199
- Change ErrorBehaviour to ErrorBehavior to continue the common software engineering practice of using US spellings #179
Major rework of the language and data streaming features so lots of breaking changes including:
- Moved from YAML-based configuration to a custom configuration
language called SCL (Sequence Configuration Language)
- Using a custom ANTLR grammar to parse the configuration language
- The new language is similar to YAML
- Consolidated entity streams, lists and array into a single datatype -
Array<T>
- There are no longer separate Steps for arrays and entity streams (e.g.
ForEach
,IsEmpty
,Length
)
- There are no longer separate Steps for arrays and entity streams (e.g.
- Consolidated strings and data streams into a single datatype -
StringStream
- Update to .NET 5.0
- Reworked logging and exceptions
- More frequent and more consistent logging
- Added step scopes
- Added localization features
- Added support for appending custom metadata
- Added steps for JSON and IDX
- Documentation has now been moved to https://docs.reductech.io
- Allow creation of SCLSettings from IConfiguration object #167
- Create shortcut methods to access nested entity properties #166
- Add 'Features' property to requirements so we can support nuix features #165
- Allow creation of entities from dictionaries #164
- Make settings more dynamic to make it easier to control multiple connectors #163
- GenerateDocumentation links should work #162
- Include more metadata in the results of GenerateDocumentation #161
- Check connector requirements, identifying errors during startup #131
- Make the Documentation generator output entities so we can have documentation spread across multiple files. #129
- Allow GZip decompression during file read and write to make life easier for technicians #159
- Create Steps to convert Entities to and from IDX #155
- Change double formatting when serializing #156
- Allow dangling commas in arrays and entity lists #157
- Create Steps to convert Entities to and from JSON #154
- Use Source Generators to generate unit test code #146
- Allow steps to have arguments without positional parameters #152
- Rename LogSituation_Core to LogSituation and ErrorCode_Core to ErrorCode #151
- Allow Connectors to access Error Exceptions #150
- Allow Connectors to access Error Exceptions #150
- Allow Connectors to Define Custom Error Codes #149
- Systematize log and error output messages so Managers can get detailed information #17
- Rename and merge Array and EntityStream methods #142
- Use the names Sequence Configuration Language and SCL where appropriate #137
- Change Single Line Comments to a single Hash #143
- Add Steps to convert dates to and from strings, so that technicians can format dates #144 #138
- Combine EntityStreams and Arrays #134
- Should Be able to Deserialize DateTimes #141
- Reinstate Serializaion, Deserialization, and DeserializationError tests #120
- Allow Pipelining to make language more concise #119
- Refactor Entities to allow infinite nesting of sequences #135
- Merge String and DataStream to make Datastream usage implicit #127
- Allow Coercion of strings to enums to make using enums easier for technicians #126
- Allow Comments in Sequence files so technicians can comment their code #122
- Allow argument aliases in language to make it easier to write readable code #118
- Allow ordered arguments to make language more concise #117
- Allow nesting of sequences to make complex steps easier to write #121
- Generated Antlr files should be in a namespace and be written to the Core/Antlr folder #124
- Allow antlr build to run on linux #123
- Allow brackets and commas to be omitted in function calls to make the language easier to read and write #115
- Use colons instead of equals in function calls to make language more intuitive #116
- ScopedStateMonad should dispose of scoped state variables when disposed #140
- Streams returned by ToCSV should be moved to the beginning of the stream #139
- StringStreams should dispose of the stream after it is read #136
- Compare functions should be wrapped in brackets when serialized #133
- TestHarness should check ordering or log values #132
- Use of the 'Not' construct prevents mutation testing #125
- Error when creating entities with 'add' in a property name #113 #112
- Update Antlr nuget packages to 4.9.1 #160
- Add .editorconfig file and standardize formatting #148
- Update to .NET 5.0 #43
Breaking changes - Step and argument names have changed to make them more
consistent. Step names now follow the convention of NamespaceAction, e.g.
ArrayLength
, ArraySort
, EntityMap
, EntityStreamSort
.
- Added Entities and EntityStreams along with Linq style methods to manipulate them.
- Added Entity Schemas to allow conversion between different
- Step state is now scoped and disposable
- Added Steps to convert
EntityStream
to/from concordance and CSV
- Rename some arguments for consistency #109
- Create Steps to read and write concordance so technicians do that easily #108
- Use AsyncEnumerable instead of TPL for EntityStream #106
- Create Linq style methods so Technicians can easily manipulate entities #72
- Create a WriteCSV method so Technicians can write entities to CSV #73
- Use CSVHelper instead of VisualBasic.io to read and write CSV files #94
- RunExternalProcess should use channels rather than StreamReaders to make testing easier #102
- Refactor Unit Test cases so classes inheriting from them have more control over settings #101
- To release control of resources, Make StateMonad IDisposable #100
- RunExternalProcess should take inputStream and Encoding arguments to support Nuix script streaming #99
- Create Schema for Entities so we can enforce and manipulate type and format constraints #95
- Create Data Interchange Entities, so that a Technicians can have a clean way to handle data #71
- Add encoding step, so that technicians can specify text encoding when reading or writing files #82
- To prevent steps going untested, create a unit test to test that all steps are being tested #91
- Allow Serialization and Deserialization of Entity, Stream, and EntityStream #93
- Unit Tests are flaky #97
- Remove obsolete Script Composition Code #105
- Add Release issue template #98
- Use template ci config, so that it's easier to maintain #96
- Change references to StateMonad to IStateMonad in Process Run Overloads #107
- Create a Step test library, so that developers can save time testing connectors #86
- GenerateDocumentation should be a step #75
- Allow short form array declarations #70
- Processes should be asynchronous and take a cancellation token #9
- Yaml scalars throw a does not have the type 'IStep`1' error. #79
- Running yaml causes "Array was a VariableName, not an argument" error #77
- ReadCsv should not require parameters with default values #78
- fail: "The type '' is never set" when setting new array to variable #69
- Type Resolver doesn't work for some generic types #65
- Remove ConsoleMethods #76
- Make error messages more verbose, so technicians can debug their yaml more easily #85
The Core SDK has been reworked to use a procedural paradigm instead of injection. See here for more details: https://gitlab.com/groups/reductech/edr/-/epics/6
Processes library has now been renamed to Core. Chain renamed to sequence, and process to step.
For more details: https://gitlab.com/groups/reductech/-/epics/5
- Processes and their factories should be in the same file #56
- Rename 'Process' to 'Step' #52
- Rename 'Processes' to 'Core' #51
- As a technician, I want to compose short forms of functions, to make it easier to write yaml #27
- Enable Composition of processes #36
- Change to the new console, so that a Technicians can have a more familiar interface #44
- Create additional utility processes #38
- As a Technician, I want to see helpful errors in yaml, so that I can diagnose and fix them more easily #28
- Create a "PreviousState" process for process splitting #16
- Create Function for combining Process Configurations #12
- Allow RunExternalProcess to handle errors #41
- Create an object for requirements #14
- Add control flow properties to all processes #11
- Processes should have a requirements property #2
- Deserialization of strings containing apostrophes fails #58
- Allow aliases for Processes and properties when deserializing #1
- Fix package tags #62
- Update ci script to latest template #61
- Use testing library instead #60
- Rename General to Steps #59
- Integrate new CI/CD script and project properties #55
- Create more tests for processes #48
- Create more tests for documentation #47
- Create more unit tests for serialization #54
- Create unit tests for serialization #49
- Enable mutation testing, so that a we can detect possible bugs #40
- Rename Core.Test to Core.Tests #57
- Merge 'attributes' with 'Attributes' #53
- Correct Mistakes in attribute Names #45
- Fix issue template location #39
- Add issue templates #37
- Create helper processes for unit testing #35
- Create an overload of RunExternalProcess which returns an object #34
- Create Preflight checks for processes #33
- Create Runtime Requirements for processes #32
- Create IRunnableProcessFactory #31
- Improve process settings type safety #30
- Change error type of RunExternalProcess #29
- Create More Test Processes #10
- Move Test processes into the main library #8
- Adjust Processes namespaces to match project hierarchy changes #7
- Prevent documentation generator from putting backticks in process names #64
- Update links in documentation contents #63
- Create a readme so users can see what the project is about and get started #50
- Add Contents section to documentation, so that a technician can find what they need more easily #46
- Create a guide, so that a Developers can build their own connectors. #42
- Change order of chain arguments #13
Initial release of Core designed to work by injecting output of a previous process into the current one.
- Reworked property injection
- Updated enumerations and added foreach test
- Added ProcessSettings to Process
- Replaced Branch and conditions with Conditional Process and Asserts
- Added CreateDirectory
- Sorted out the whole injection situation
- Fixed bug in ProcessInjector
- Add documentation