├── CSharp ├── .gitignore ├── BookingApi.Sql │ ├── BookingApi.Sql.csproj │ ├── BookingDbSchema.sql │ ├── Properties │ │ └── AssemblyInfo.cs │ └── SqlReservationsProgramVisitor.cs ├── BookingApi.SqlTests │ ├── BookingApi.SqlTests.csproj │ ├── ConnectionStrings.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── SqlReservationsProgramVisitorTests.cs │ ├── UseDatabaseAttribute.cs │ └── packages.config ├── BookingApi.UnitTests │ ├── BookingApi.UnitTests.csproj │ ├── BookingApiTestConventionsAttribute.cs │ ├── MaîtreDTests.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── StubReservationsVisitor.cs │ ├── app.config │ └── packages.config ├── BookingApi.sln ├── BookingApi │ ├── BookingApi.csproj │ ├── Create.cs │ ├── Free.cs │ ├── IMaybe.cs │ ├── IMaybeVisitor.cs │ ├── IMaîtreD.cs │ ├── IReservationsInstruction.cs │ ├── IReservationsInstructionVisitor.cs │ ├── IReservationsProgram.cs │ ├── IReservationsProgramVisitor.cs │ ├── IsReservationInFuture.cs │ ├── Just.cs │ ├── Maybe.cs │ ├── MaîtreD.cs │ ├── Nothing.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Pure.cs │ ├── ReadReservations.cs │ ├── Reservation.cs │ ├── ReservationsInstruction.cs │ ├── ReservationsMaybe.cs │ ├── ReservationsProgram.cs │ ├── Unit.cs │ └── packages.config ├── Build.fsx ├── build.sh └── packages │ ├── AutoFixture.4.0.1 │ ├── AutoFixture.4.0.1.nupkg │ └── lib │ │ ├── net452 │ │ ├── AutoFixture.dll │ │ ├── AutoFixture.pdb │ │ └── AutoFixture.xml │ │ └── netstandard1.5 │ │ ├── AutoFixture.dll │ │ ├── AutoFixture.pdb │ │ └── AutoFixture.xml │ ├── AutoFixture.Xunit2.4.0.1 │ ├── AutoFixture.Xunit2.4.0.1.nupkg │ └── lib │ │ ├── net452 │ │ ├── AutoFixture.Xunit2.dll │ │ ├── AutoFixture.Xunit2.pdb │ │ └── AutoFixture.Xunit2.xml │ │ └── netstandard1.5 │ │ ├── AutoFixture.Xunit2.dll │ │ ├── AutoFixture.Xunit2.pdb │ │ └── AutoFixture.Xunit2.xml │ ├── FAKE.4.64.4 │ ├── FAKE.4.64.4.nupkg │ └── tools │ │ ├── Argu.dll │ │ ├── Argu.pdb │ │ ├── Argu.xml │ │ ├── FAKE.FSharp.Compiler.Service.dll │ │ ├── FAKE.exe │ │ ├── FAKE.exe.config │ │ ├── FAKE.pdb │ │ ├── FAKE.pdb.srcsrv │ │ ├── FSharp.Core.dll │ │ ├── FSharp.Core.optdata │ │ ├── FSharp.Core.sigdata │ │ ├── FSharp.Core.xml │ │ ├── Fake.Deploy.Lib.dll │ │ ├── Fake.Deploy.Lib.dll.config │ │ ├── Fake.Deploy.Lib.pdb │ │ ├── Fake.Deploy.Lib.pdb.srcsrv │ │ ├── Fake.Deploy.Lib.xml │ │ ├── Fake.Deploy.exe │ │ ├── Fake.Deploy.exe.config │ │ ├── Fake.Deploy.pdb │ │ ├── Fake.Deploy.pdb.srcsrv │ │ ├── Fake.Experimental.XML │ │ ├── Fake.Experimental.dll │ │ ├── Fake.Experimental.dll.config │ │ ├── Fake.Experimental.pdb │ │ ├── Fake.Experimental.pdb.srcsrv │ │ ├── Fake.FluentMigrator.XML │ │ ├── Fake.FluentMigrator.dll │ │ ├── Fake.FluentMigrator.pdb │ │ ├── Fake.FluentMigrator.pdb.srcsrv │ │ ├── Fake.Gallio.XML │ │ ├── Fake.Gallio.dll │ │ ├── Fake.Gallio.dll.config │ │ ├── Fake.Gallio.pdb │ │ ├── Fake.Gallio.pdb.srcsrv │ │ ├── Fake.IIS.XML │ │ ├── Fake.IIS.dll │ │ ├── Fake.IIS.dll.config │ │ ├── Fake.IIS.pdb │ │ ├── Fake.IIS.pdb.srcsrv │ │ ├── Fake.SQL.XML │ │ ├── Fake.SQL.dll │ │ ├── Fake.SQL.dll.config │ │ ├── Fake.SQL.pdb │ │ ├── Fake.SQL.pdb.srcsrv │ │ ├── FakeLib.XML │ │ ├── FakeLib.dll │ │ ├── FakeLib.dll.config │ │ ├── FakeLib.pdb │ │ ├── FakeLib.pdb.srcsrv │ │ ├── FluentMigrator.Runner.dll │ │ ├── FluentMigrator.Runner.pdb │ │ ├── FluentMigrator.dll │ │ ├── FluentMigrator.pdb │ │ ├── FluentMigrator.xml │ │ ├── HashLib.dll │ │ ├── ICSharpCode.SharpZipLib.dll │ │ ├── License.txt │ │ ├── Microsoft.Build.Utilities.v3.5.dll │ │ ├── Microsoft.Build.Utilities.v3.5.resources.dll │ │ ├── Microsoft.Build.Utilities.v3.5.xml │ │ ├── Microsoft.SqlServer.ConnectionInfo.dll │ │ ├── Microsoft.SqlServer.Management.Sdk.Sfc.dll │ │ ├── Microsoft.SqlServer.Smo.dll │ │ ├── Microsoft.Web.Administration.dll │ │ ├── Microsoft.Web.XmlTransform.dll │ │ ├── Mono.Cecil.Mdb.dll │ │ ├── Mono.Cecil.Pdb.dll │ │ ├── Mono.Cecil.Rocks.dll │ │ ├── Mono.Cecil.dll │ │ ├── NLog.dll │ │ ├── NLog.xml │ │ ├── Nancy.Authentication.Stateless.dll │ │ ├── Nancy.Authentication.Stateless.xml │ │ ├── Nancy.Hosting.Self.dll │ │ ├── Nancy.Hosting.Self.xml │ │ ├── Nancy.Serialization.JsonNet.dll │ │ ├── Nancy.dll │ │ ├── Nancy.xml │ │ ├── Newtonsoft.Json.dll │ │ ├── Newtonsoft.Json.xml │ │ ├── NuGet.Core.dll │ │ ├── README.markdown │ │ ├── RELEASE_NOTES.md │ │ ├── Renci.SshNet.dll │ │ ├── Renci.SshNet.xml │ │ ├── Serilog.FullNetFx.dll │ │ ├── Serilog.FullNetFx.pdb │ │ ├── Serilog.FullNetFx.xml │ │ ├── Serilog.Sinks.NLog.dll │ │ ├── Serilog.Sinks.NLog.xml │ │ ├── Serilog.dll │ │ ├── Serilog.pdb │ │ ├── Serilog.xml │ │ ├── StyleCop.CSharp.Rules.dll │ │ ├── StyleCop.CSharp.dll │ │ ├── StyleCop.dll │ │ ├── System.Buffers.dll │ │ ├── System.Diagnostics.DiagnosticSource.dll │ │ ├── System.Diagnostics.DiagnosticSource.xml │ │ ├── System.Net.Http.Extensions.dll │ │ ├── System.Net.Http.Extensions.xml │ │ ├── System.Net.Http.Primitives.dll │ │ ├── System.Net.Http.Primitives.xml │ │ ├── System.Runtime.InteropServices.RuntimeInformation.dll │ │ ├── System.Threading.Tasks.Extensions.dll │ │ ├── System.Threading.Tasks.Extensions.xml │ │ ├── System.ValueTuple.dll │ │ ├── VSFile.dll │ │ └── VSFile.xml │ ├── System.Threading.Tasks.Extensions.4.3.0 │ ├── System.Threading.Tasks.Extensions.4.3.0.nupkg │ ├── ThirdPartyNotices.txt │ ├── dotnet_library_license.txt │ └── lib │ │ ├── netstandard1.0 │ │ ├── System.Threading.Tasks.Extensions.dll │ │ └── System.Threading.Tasks.Extensions.xml │ │ └── portable-net45+win8+wp8+wpa81 │ │ ├── System.Threading.Tasks.Extensions.dll │ │ └── System.Threading.Tasks.Extensions.xml │ ├── System.ValueTuple.4.3.0 │ ├── System.ValueTuple.4.3.0.nupkg │ ├── ThirdPartyNotices.txt │ ├── dotnet_library_license.txt │ └── lib │ │ ├── netstandard1.0 │ │ ├── .xml │ │ └── System.ValueTuple.dll │ │ └── portable-net40+sl4+win8+wp8 │ │ ├── .xml │ │ └── System.ValueTuple.dll │ ├── xunit.2.3.1 │ └── xunit.2.3.1.nupkg │ ├── xunit.abstractions.2.0.1 │ ├── lib │ │ ├── net35 │ │ │ ├── xunit.abstractions.dll │ │ │ └── xunit.abstractions.xml │ │ └── netstandard1.0 │ │ │ ├── xunit.abstractions.dll │ │ │ └── xunit.abstractions.xml │ └── xunit.abstractions.2.0.1.nupkg │ ├── xunit.analyzers.0.7.0 │ ├── analyzers │ │ └── dotnet │ │ │ └── cs │ │ │ └── xunit.analyzers.dll │ ├── tools │ │ ├── install.ps1 │ │ └── uninstall.ps1 │ └── xunit.analyzers.0.7.0.nupkg │ ├── xunit.assert.2.3.1 │ ├── lib │ │ └── netstandard1.1 │ │ │ ├── xunit.assert.dll │ │ │ └── xunit.assert.xml │ └── xunit.assert.2.3.1.nupkg │ ├── xunit.core.2.3.1 │ ├── build │ │ ├── xunit.core.props │ │ ├── xunit.core.targets │ │ └── xunit.execution.desktop.dll │ ├── buildMultiTargeting │ │ ├── xunit.core.props │ │ └── xunit.core.targets │ └── xunit.core.2.3.1.nupkg │ ├── xunit.extensibility.core.2.3.1 │ ├── lib │ │ └── netstandard1.1 │ │ │ ├── xunit.core.dll │ │ │ ├── xunit.core.dll.tdnet │ │ │ ├── xunit.core.xml │ │ │ ├── xunit.runner.tdnet.dll │ │ │ └── xunit.runner.utility.net452.dll │ └── xunit.extensibility.core.2.3.1.nupkg │ ├── xunit.extensibility.execution.2.3.1 │ ├── lib │ │ ├── net452 │ │ │ ├── xunit.execution.desktop.dll │ │ │ └── xunit.execution.desktop.xml │ │ └── netstandard1.1 │ │ │ ├── xunit.execution.dotnet.dll │ │ │ └── xunit.execution.dotnet.xml │ └── xunit.extensibility.execution.2.3.1.nupkg │ └── xunit.runner.console.2.3.1 │ ├── build │ └── xunit.runner.console.props │ ├── tools │ ├── net452 │ │ ├── xunit.abstractions.dll │ │ ├── xunit.console.exe │ │ ├── xunit.console.exe.config │ │ ├── xunit.console.x86.exe │ │ ├── xunit.console.x86.exe.config │ │ ├── xunit.runner.reporters.net452.dll │ │ └── xunit.runner.utility.net452.dll │ ├── netcoreapp1.0 │ │ ├── xunit.abstractions.dll │ │ ├── xunit.console.deps.json │ │ ├── xunit.console.dll │ │ ├── xunit.console.dll.config │ │ ├── xunit.console.runtimeconfig.json │ │ ├── xunit.runner.reporters.netcoreapp10.dll │ │ ├── xunit.runner.utility.netcoreapp10.dll │ │ └── xunit.runner.utility.netcoreapp10.xml │ └── netcoreapp2.0 │ │ ├── xunit.abstractions.dll │ │ ├── xunit.console.deps.json │ │ ├── xunit.console.dll │ │ ├── xunit.console.dll.config │ │ ├── xunit.console.runtimeconfig.json │ │ ├── xunit.runner.reporters.netcoreapp10.dll │ │ ├── xunit.runner.utility.netcoreapp10.dll │ │ └── xunit.runner.utility.netcoreapp10.xml │ └── xunit.runner.console.2.3.1.nupkg ├── FSharp ├── .gitignore ├── BookingApi.UnitTests │ ├── AssemblyInfo.fs │ ├── BookingApi.UnitTests.fsproj │ ├── Gen.fs │ ├── Tests.fs │ └── packages.config ├── BookingApi.sln ├── BookingApi │ ├── AssemblyInfo.fs │ ├── Booking.fs │ ├── BookingApi.fsproj │ ├── Reservations.fs │ ├── ReservationsOption.fs │ └── packages.config └── packages │ ├── FSharp.Core.4.3.4 │ ├── FSharp.Core.4.3.4.nupkg │ └── lib │ │ ├── net45 │ │ ├── FSharp.Core.dll │ │ ├── FSharp.Core.optdata │ │ ├── FSharp.Core.sigdata │ │ ├── FSharp.Core.xml │ │ ├── UnitTests │ │ │ └── MockTypeProviders │ │ │ │ ├── cs │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── de │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── en │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── es │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── fr │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── it │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── ja │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── ko │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── pl │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── pt-BR │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── ru │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── tr │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ ├── zh-Hans │ │ │ │ └── FSharp.Core.resources.dll │ │ │ │ └── zh-Hant │ │ │ │ └── FSharp.Core.resources.dll │ │ ├── cs │ │ │ └── FSharp.Core.resources.dll │ │ ├── de │ │ │ └── FSharp.Core.resources.dll │ │ ├── en │ │ │ └── FSharp.Core.resources.dll │ │ ├── es │ │ │ └── FSharp.Core.resources.dll │ │ ├── fr │ │ │ └── FSharp.Core.resources.dll │ │ ├── it │ │ │ └── FSharp.Core.resources.dll │ │ ├── ja │ │ │ └── FSharp.Core.resources.dll │ │ ├── ko │ │ │ └── FSharp.Core.resources.dll │ │ ├── pl │ │ │ └── FSharp.Core.resources.dll │ │ ├── pt-BR │ │ │ └── FSharp.Core.resources.dll │ │ ├── ru │ │ │ └── FSharp.Core.resources.dll │ │ ├── tr │ │ │ └── FSharp.Core.resources.dll │ │ ├── zh-Hans │ │ │ └── FSharp.Core.resources.dll │ │ └── zh-Hant │ │ │ └── FSharp.Core.resources.dll │ │ └── netstandard1.6 │ │ ├── FSharp.Core.dll │ │ ├── FSharp.Core.optdata │ │ ├── FSharp.Core.sigdata │ │ ├── FSharp.Core.xml │ │ ├── cs │ │ └── FSharp.Core.resources.dll │ │ ├── de │ │ └── FSharp.Core.resources.dll │ │ ├── en │ │ └── FSharp.Core.resources.dll │ │ ├── es │ │ └── FSharp.Core.resources.dll │ │ ├── fr │ │ └── FSharp.Core.resources.dll │ │ ├── it │ │ └── FSharp.Core.resources.dll │ │ ├── ja │ │ └── FSharp.Core.resources.dll │ │ ├── ko │ │ └── FSharp.Core.resources.dll │ │ ├── pl │ │ └── FSharp.Core.resources.dll │ │ ├── pt-BR │ │ └── FSharp.Core.resources.dll │ │ ├── ru │ │ └── FSharp.Core.resources.dll │ │ ├── tr │ │ └── FSharp.Core.resources.dll │ │ ├── zh-Hans │ │ └── FSharp.Core.resources.dll │ │ └── zh-Hant │ │ └── FSharp.Core.resources.dll │ ├── Hedgehog.0.7.0.0 │ ├── Hedgehog.0.7.0.0.nupkg │ └── lib │ │ └── netstandard1.6 │ │ ├── Hedgehog.XML │ │ └── Hedgehog.dll │ ├── System.Collections.Specialized.4.0.1 │ ├── System.Collections.Specialized.4.0.1.nupkg │ ├── ThirdPartyNotices.txt │ ├── dotnet_library_license.txt │ ├── lib │ │ ├── MonoAndroid10 │ │ │ └── _._ │ │ ├── MonoTouch10 │ │ │ └── _._ │ │ ├── net46 │ │ │ └── System.Collections.Specialized.dll │ │ ├── netstandard1.3 │ │ │ └── System.Collections.Specialized.dll │ │ ├── xamarinios10 │ │ │ └── _._ │ │ ├── xamarinmac20 │ │ │ └── _._ │ │ ├── xamarintvos10 │ │ │ └── _._ │ │ └── xamarinwatchos10 │ │ │ └── _._ │ └── ref │ │ ├── MonoAndroid10 │ │ └── _._ │ │ ├── MonoTouch10 │ │ └── _._ │ │ ├── net46 │ │ └── System.Collections.Specialized.dll │ │ ├── netstandard1.3 │ │ ├── System.Collections.Specialized.dll │ │ ├── System.Collections.Specialized.xml │ │ ├── de │ │ │ └── System.Collections.Specialized.xml │ │ ├── es │ │ │ └── System.Collections.Specialized.xml │ │ ├── fr │ │ │ └── System.Collections.Specialized.xml │ │ ├── it │ │ │ └── System.Collections.Specialized.xml │ │ ├── ja │ │ │ └── System.Collections.Specialized.xml │ │ ├── ko │ │ │ └── System.Collections.Specialized.xml │ │ ├── ru │ │ │ └── System.Collections.Specialized.xml │ │ ├── zh-hans │ │ │ └── System.Collections.Specialized.xml │ │ └── zh-hant │ │ │ └── System.Collections.Specialized.xml │ │ ├── xamarinios10 │ │ └── _._ │ │ ├── xamarinmac20 │ │ └── _._ │ │ ├── xamarintvos10 │ │ └── _._ │ │ └── xamarinwatchos10 │ │ └── _._ │ ├── System.ValueTuple.4.3.1 │ ├── System.ValueTuple.4.3.1.nupkg │ ├── ThirdPartyNotices.txt │ ├── dotnet_library_license.txt │ ├── lib │ │ ├── MonoAndroid10 │ │ │ └── _._ │ │ ├── MonoTouch10 │ │ │ └── _._ │ │ ├── netstandard1.0 │ │ │ ├── .xml │ │ │ └── System.ValueTuple.dll │ │ ├── portable-net40+sl4+win8+wp8 │ │ │ ├── .xml │ │ │ └── System.ValueTuple.dll │ │ ├── xamarinios10 │ │ │ └── _._ │ │ ├── xamarinmac20 │ │ │ └── _._ │ │ ├── xamarintvos10 │ │ │ └── _._ │ │ └── xamarinwatchos10 │ │ │ └── _._ │ └── ref │ │ ├── MonoAndroid10 │ │ └── _._ │ │ ├── MonoTouch10 │ │ └── _._ │ │ ├── xamarinios10 │ │ └── _._ │ │ ├── xamarinmac20 │ │ └── _._ │ │ ├── xamarintvos10 │ │ └── _._ │ │ └── xamarinwatchos10 │ │ └── _._ │ ├── Unquote.4.0.0 │ ├── Unquote.4.0.0.nupkg │ └── lib │ │ ├── net45 │ │ ├── Unquote.dll │ │ └── Unquote.xml │ │ └── netstandard2.0 │ │ ├── Unquote.dll │ │ └── Unquote.xml │ ├── xunit.abstractions.2.0.1 │ ├── lib │ │ ├── net35 │ │ │ ├── xunit.abstractions.dll │ │ │ └── xunit.abstractions.xml │ │ └── netstandard1.0 │ │ │ ├── xunit.abstractions.dll │ │ │ └── xunit.abstractions.xml │ └── xunit.abstractions.2.0.1.nupkg │ ├── xunit.core.2.3.1 │ ├── build │ │ ├── xunit.core.props │ │ ├── xunit.core.targets │ │ └── xunit.execution.desktop.dll │ ├── buildMultiTargeting │ │ ├── xunit.core.props │ │ └── xunit.core.targets │ └── xunit.core.2.3.1.nupkg │ ├── xunit.extensibility.core.2.3.1 │ ├── lib │ │ └── netstandard1.1 │ │ │ ├── xunit.core.dll │ │ │ ├── xunit.core.dll.tdnet │ │ │ ├── xunit.core.xml │ │ │ ├── xunit.runner.tdnet.dll │ │ │ └── xunit.runner.utility.net452.dll │ └── xunit.extensibility.core.2.3.1.nupkg │ └── xunit.extensibility.execution.2.3.1 │ ├── lib │ ├── net452 │ │ ├── xunit.execution.desktop.dll │ │ └── xunit.execution.desktop.xml │ └── netstandard1.1 │ │ ├── xunit.execution.dotnet.dll │ │ └── xunit.execution.dotnet.xml │ └── xunit.extensibility.execution.2.3.1.nupkg ├── Haskell ├── .gitignore ├── BookingApi.cabal ├── Setup.hs ├── app │ └── Main.hs ├── src │ └── BookingApi.hs ├── stack.yaml └── test │ └── Spec.hs ├── LICENSE └── README.md /CSharp/.gitignore: -------------------------------------------------------------------------------- 1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) 2 | [Bb]in/ 3 | [Oo]bj/ 4 | 5 | # MsTest test results 6 | TestResults 7 | 8 | ## Ignore Visual Studio temporary files, build results, and 9 | ## files generated by popular Visual Studio add-ons. 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.sln.docstates 15 | .vs/ 16 | 17 | # Build results 18 | [Dd]ebug/ 19 | [Rr]elease/ 20 | x64/ 21 | *_i.c 22 | *_p.c 23 | *.ilk 24 | *.meta 25 | *.obj 26 | *.pch 27 | *.pgc 28 | *.pgd 29 | *.rsp 30 | *.sbr 31 | *.tlb 32 | *.tli 33 | *.tlh 34 | *.tmp 35 | *.log 36 | *.vspscc 37 | *.vssscc 38 | .builds 39 | 40 | # Visual C++ cache files 41 | ipch/ 42 | *.aps 43 | *.ncb 44 | *.opensdf 45 | *.sdf 46 | 47 | # Visual Studio profiler 48 | *.psess 49 | *.vsp 50 | *.vspx 51 | 52 | # Guidance Automation Toolkit 53 | *.gpState 54 | 55 | # ReSharper is a .NET coding add-in 56 | _ReSharper* 57 | 58 | # NCrunch 59 | *.ncrunch* 60 | .*crunch*.local.xml 61 | 62 | # Installshield output folder 63 | [Ee]xpress 64 | 65 | # DocProject is a documentation generator add-in 66 | DocProject/buildhelp/ 67 | DocProject/Help/*.HxT 68 | DocProject/Help/*.HxC 69 | DocProject/Help/*.hhc 70 | DocProject/Help/*.hhk 71 | DocProject/Help/*.hhp 72 | DocProject/Help/Html2 73 | DocProject/Help/html 74 | 75 | # Click-Once directory 76 | publish 77 | 78 | # Publish Web Output 79 | *.Publish.xml 80 | 81 | # Windows Azure Build Output 82 | csx 83 | *.build.csdef 84 | 85 | # Windows Store app package directory 86 | AppPackages/ 87 | 88 | # Backup & report files from converting an old project file to a newer 89 | # Visual Studio version. Backup files are not needed, because we have git ;-) 90 | _Upgr/ 91 | Backup*/ 92 | UpgradeLog*.XML 93 | 94 | # FAKE hidden directory 95 | .fake/ 96 | -------------------------------------------------------------------------------- /CSharp/BookingApi.Sql/BookingApi.Sql.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859} 8 | Library 9 | Properties 10 | Ploeh.Samples.BookingApi.Sql 11 | Ploeh.Samples.BookingApi.Sql 12 | v4.6.1 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | {1ad71eec-b0f5-4917-a5c5-2e33abbdfb13} 49 | BookingApi 50 | 51 | 52 | 53 | 54 | Always 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /CSharp/BookingApi.Sql/BookingDbSchema.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE [Booking] 2 | GO 3 | 4 | USE [Booking] 5 | GO 6 | 7 | CREATE TABLE [dbo].[Reservations] ( 8 | [Id] INT NOT NULL IDENTITY, 9 | [Date] DATETIMEOFFSET (7) NOT NULL, 10 | [Name] NVARCHAR (50) NOT NULL, 11 | [Email] NVARCHAR (50) NOT NULL, 12 | [Quantity] INT NOT NULL, 13 | PRIMARY KEY CLUSTERED ([Id] ASC) 14 | ) 15 | GO -------------------------------------------------------------------------------- /CSharp/BookingApi.Sql/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BookingApi.Sql")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BookingApi.Sql")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1d24d39b-0cb0-4a46-93f6-bae9289f6859")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CSharp/BookingApi.Sql/SqlReservationsProgramVisitor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Data.SqlClient; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Ploeh.Samples.BookingApi.Sql 9 | { 10 | public class SqlReservationsProgramVisitor : 11 | IReservationsProgramVisitor, 12 | IReservationsInstructionVisitor, T> 13 | { 14 | private readonly string connectionString; 15 | 16 | public SqlReservationsProgramVisitor(string connectionString) 17 | { 18 | this.connectionString = connectionString; 19 | } 20 | 21 | public T VisitPure(T x) 22 | { 23 | return x; 24 | } 25 | 26 | public T VisitFree(IReservationsInstruction> i) 27 | { 28 | return i.Accept(this); 29 | } 30 | 31 | public T VisitIsReservationInFuture( 32 | Reservation reservation, 33 | Func> continuation) 34 | { 35 | var isInFuture = DateTimeOffset.Now < reservation.Date; 36 | return continuation(isInFuture).Accept(this); 37 | } 38 | 39 | public T VisitReadReservations( 40 | DateTimeOffset date, 41 | Func, IReservationsProgram> continuation) 42 | { 43 | var reservations = ReadReservations( 44 | date.Date, 45 | date.Date.AddDays(1).AddTicks(-1)); 46 | return continuation(reservations).Accept(this); 47 | } 48 | 49 | private IReadOnlyCollection ReadReservations( 50 | DateTimeOffset min, 51 | DateTimeOffset max) 52 | { 53 | var result = new List(); 54 | 55 | using (var conn = new SqlConnection(connectionString)) 56 | using (var cmd = new SqlCommand(readByRangeSql, conn)) 57 | { 58 | cmd.Parameters.Add(new SqlParameter("@MinDate", min)); 59 | cmd.Parameters.Add(new SqlParameter("@MaxDate", max)); 60 | 61 | conn.Open(); 62 | using (var rdr = cmd.ExecuteReader()) 63 | { 64 | while (rdr.Read()) 65 | result.Add( 66 | new Reservation 67 | { 68 | Date = (DateTimeOffset)rdr["Date"], 69 | Name = (string)rdr["Name"], 70 | Email = (string)rdr["Email"], 71 | Quantity = (int)rdr["Quantity"] 72 | }); 73 | } 74 | } 75 | 76 | return result; 77 | } 78 | 79 | private const string readByRangeSql = @" 80 | SELECT [Date], [Name], [Email], [Quantity] 81 | FROM [dbo].[Reservations] 82 | WHERE YEAR(@MinDate) <= YEAR([Date]) 83 | AND MONTH(@MinDate) <= MONTH([Date]) 84 | AND DAY(@MinDate) <= DAY([Date]) 85 | AND YEAR([Date]) <= YEAR(@MaxDate) 86 | AND MONTH([Date]) <= MONTH(@MaxDate) 87 | AND DAY([Date]) <= DAY(@MaxDate)"; 88 | 89 | public T VisitCreate( 90 | Reservation reservation, 91 | Func> continuation) 92 | { 93 | return continuation(Create(reservation)).Accept(this); 94 | } 95 | 96 | private int Create(Reservation reservation) 97 | { 98 | using (var conn = new SqlConnection(connectionString)) 99 | using (var cmd = new SqlCommand(createReservationSql, conn)) 100 | { 101 | cmd.Parameters.Add( 102 | new SqlParameter("@Date", reservation.Date)); 103 | cmd.Parameters.Add( 104 | new SqlParameter("@Name", reservation.Name)); 105 | cmd.Parameters.Add( 106 | new SqlParameter("@Email", reservation.Email)); 107 | cmd.Parameters.Add( 108 | new SqlParameter("@Quantity", reservation.Quantity)); 109 | 110 | conn.Open(); 111 | return cmd.ExecuteNonQuery(); 112 | } 113 | } 114 | 115 | private const string createReservationSql = @" 116 | INSERT INTO [dbo].[Reservations] ([Date], [Name], [Email], [Quantity]) 117 | VALUES (@Date, @Name, @Email, @Quantity)"; 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /CSharp/BookingApi.SqlTests/ConnectionStrings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi.SqlTests 8 | { 9 | public class ConnectionStrings 10 | { 11 | public const string Reservations = 12 | @"Server=(LocalDB)\MSSQLLocalDB;Database=Booking;Integrated Security=true;Pooling=false"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi.SqlTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BookingApi.SqlTests")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BookingApi.SqlTests")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("71c94936-0ff3-4cfa-b2a7-9a9625c63d51")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CSharp/BookingApi.SqlTests/UseDatabaseAttribute.cs: -------------------------------------------------------------------------------- 1 | using Ploeh.Samples.BookingApi.Sql; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Data.SqlClient; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Reflection; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using Xunit.Sdk; 11 | 12 | namespace Ploeh.Samples.BookingApi.SqlTests 13 | { 14 | public class UseDatabaseAttribute : BeforeAfterTestAttribute 15 | { 16 | public override void Before(MethodInfo methodUnderTest) 17 | { 18 | using (var schemaStream = ReadSchema()) 19 | using (var rdr = new StreamReader(schemaStream)) 20 | { 21 | var schemaSql = rdr.ReadToEnd(); 22 | 23 | var builder = new SqlConnectionStringBuilder( 24 | ConnectionStrings.Reservations); 25 | builder.InitialCatalog = "Master"; 26 | using (var conn = new SqlConnection(builder.ConnectionString)) 27 | using (var cmd = new SqlCommand()) 28 | { 29 | conn.Open(); 30 | cmd.Connection = conn; 31 | 32 | foreach (var sql in SeperateStatements(schemaSql)) 33 | { 34 | cmd.CommandText = sql; 35 | cmd.ExecuteNonQuery(); 36 | } 37 | } 38 | } 39 | 40 | base.Before(methodUnderTest); 41 | } 42 | 43 | private Stream ReadSchema() 44 | { 45 | return typeof(SqlReservationsProgramVisitor<>) 46 | .Assembly 47 | .GetManifestResourceStream( 48 | "Ploeh.Samples.BookingApi.Sql.BookingDbSchema.sql"); 49 | } 50 | 51 | private static IEnumerable SeperateStatements(string schemaSql) 52 | { 53 | return schemaSql.Split( 54 | new[] { "GO" }, 55 | StringSplitOptions.RemoveEmptyEntries); 56 | } 57 | 58 | public override void After(MethodInfo methodUnderTest) 59 | { 60 | base.After(methodUnderTest); 61 | 62 | var dropCmd = @" 63 | IF EXISTS (SELECT name 64 | FROM master.dbo.sysdatabases 65 | WHERE name = N'Booking') 66 | DROP DATABASE[Booking];"; 67 | 68 | var builder = new SqlConnectionStringBuilder( 69 | ConnectionStrings.Reservations); 70 | builder.InitialCatalog = "Master"; 71 | using (var conn = new SqlConnection(builder.ConnectionString)) 72 | using (var cmd = new SqlCommand(dropCmd, conn)) 73 | { 74 | conn.Open(); 75 | cmd.ExecuteNonQuery(); 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /CSharp/BookingApi.SqlTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/BookingApiTestConventionsAttribute.cs: -------------------------------------------------------------------------------- 1 | using AutoFixture; 2 | using AutoFixture.Xunit2; 3 | using System; 4 | 5 | namespace Ploeh.Samples.BookingApi.UnitTests 6 | { 7 | public class BookingApiTestConventionsAttribute : AutoDataAttribute 8 | { 9 | public BookingApiTestConventionsAttribute() : 10 | base(() => new Fixture()) 11 | { 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/MaîtreDTests.cs: -------------------------------------------------------------------------------- 1 | using AutoFixture.Xunit2; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Xunit; 8 | 9 | namespace Ploeh.Samples.BookingApi.UnitTests 10 | { 11 | public class MaîtreDTests 12 | { 13 | [Theory, BookingApiTestConventions] 14 | public void TryAcceptReturnsReservationIdInHappyPathScenario( 15 | Reservation reservation, 16 | IReadOnlyCollection reservations, 17 | MaîtreD sut, 18 | int excessCapacity, 19 | int expected) 20 | { 21 | var reservedSeats = reservations.Sum(r => r.Quantity); 22 | reservation.IsAccepted = false; 23 | sut = sut.WithCapacity( 24 | reservedSeats + reservation.Quantity + excessCapacity); 25 | 26 | var actual = sut.TryAccept(reservation); 27 | 28 | Assert.Equal( 29 | new Just(expected), 30 | actual.Accept(new StubReservationsVisitor>(true, reservations, expected))); 31 | Assert.True(reservation.IsAccepted); 32 | } 33 | 34 | [Theory, BookingApiTestConventions] 35 | public void TryAcceptReturnsNullOnReservationInThePast( 36 | Reservation reservation, 37 | IReadOnlyCollection reservations, 38 | int id, 39 | MaîtreD sut) 40 | { 41 | reservation.IsAccepted = false; 42 | 43 | var actual = sut.TryAccept(reservation); 44 | 45 | Assert.True( 46 | actual.Accept(new StubReservationsVisitor>(false, reservations, id)).IsNothing()); 47 | Assert.False(reservation.IsAccepted); 48 | } 49 | 50 | [Theory, BookingApiTestConventions] 51 | public void TryAcceptReturnsNullOnInsufficientCapacity( 52 | Reservation reservation, 53 | IReadOnlyCollection reservations, 54 | int id, 55 | MaîtreD sut) 56 | { 57 | reservation.IsAccepted = false; 58 | var reservedSeats = reservations.Sum(r => r.Quantity); 59 | sut = sut.WithCapacity(reservedSeats + reservation.Quantity - 1); 60 | 61 | var actual = sut.TryAccept(reservation); 62 | 63 | Assert.True( 64 | actual.Accept(new StubReservationsVisitor>(true, reservations, id)).IsNothing()); 65 | Assert.False(reservation.IsAccepted); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BookingApi.UnitTests")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BookingApi.UnitTests")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("c920718b-18ca-4013-8a2a-451e3f03420e")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/StubReservationsVisitor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi.UnitTests 8 | { 9 | public class StubReservationsVisitor : 10 | IReservationsProgramVisitor, 11 | IReservationsInstructionVisitor, T> 12 | { 13 | private readonly bool isInFuture; 14 | private readonly IReadOnlyCollection reservations; 15 | private readonly int id; 16 | 17 | public StubReservationsVisitor( 18 | bool isInFuture, 19 | IReadOnlyCollection reservations, 20 | int id) 21 | { 22 | this.isInFuture = isInFuture; 23 | this.reservations = reservations; 24 | this.id = id; 25 | } 26 | 27 | public T VisitPure(T x) 28 | { 29 | return x; 30 | } 31 | 32 | public T VisitFree(IReservationsInstruction> i) 33 | { 34 | return i.Accept(this); 35 | } 36 | 37 | public T VisitIsReservationInFuture( 38 | Reservation reservation, 39 | Func> continuation) 40 | { 41 | return continuation(isInFuture).Accept(this); 42 | } 43 | 44 | public T VisitReadReservations( 45 | DateTimeOffset date, 46 | Func, IReservationsProgram> continuation) 47 | { 48 | return continuation(reservations).Accept(this); 49 | } 50 | 51 | public T VisitCreate( 52 | Reservation reservation, 53 | Func> continuation) 54 | { 55 | return continuation(id).Accept(this); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi.UnitTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi", "BookingApi\BookingApi.csproj", "{1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F7C500BD-9B95-4031-A1A0-01B8CF3C530D}" 9 | ProjectSection(SolutionItems) = preProject 10 | Build.fsx = Build.fsx 11 | EndProjectSection 12 | EndProject 13 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.UnitTests", "BookingApi.UnitTests\BookingApi.UnitTests.csproj", "{C920718B-18CA-4013-8A2A-451E3F03420E}" 14 | EndProject 15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.Sql", "BookingApi.Sql\BookingApi.Sql.csproj", "{1D24D39B-0CB0-4A46-93F6-BAE9289F6859}" 16 | EndProject 17 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.SqlTests", "BookingApi.SqlTests\BookingApi.SqlTests.csproj", "{71C94936-0FF3-4CFA-B2A7-9A9625C63D51}" 18 | EndProject 19 | Global 20 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 21 | Debug|Any CPU = Debug|Any CPU 22 | Release|Any CPU = Release|Any CPU 23 | EndGlobalSection 24 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 25 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 26 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Debug|Any CPU.Build.0 = Debug|Any CPU 27 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Release|Any CPU.Build.0 = Release|Any CPU 29 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 30 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Debug|Any CPU.Build.0 = Debug|Any CPU 31 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Release|Any CPU.ActiveCfg = Release|Any CPU 32 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Release|Any CPU.Build.0 = Release|Any CPU 33 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 34 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Debug|Any CPU.Build.0 = Debug|Any CPU 35 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Release|Any CPU.ActiveCfg = Release|Any CPU 36 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Release|Any CPU.Build.0 = Release|Any CPU 37 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 38 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Debug|Any CPU.Build.0 = Debug|Any CPU 39 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Release|Any CPU.ActiveCfg = Release|Any CPU 40 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Release|Any CPU.Build.0 = Release|Any CPU 41 | EndGlobalSection 42 | GlobalSection(SolutionProperties) = preSolution 43 | HideSolutionNode = FALSE 44 | EndGlobalSection 45 | GlobalSection(ExtensibilityGlobals) = postSolution 46 | SolutionGuid = {473AFC14-011A-4D20-A262-57937258F084} 47 | EndGlobalSection 48 | EndGlobal 49 | -------------------------------------------------------------------------------- /CSharp/BookingApi/BookingApi.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13} 8 | Library 9 | Properties 10 | Ploeh.Samples.BookingApi 11 | Ploeh.Samples.BookingApi 12 | v4.6.1 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Create.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class Create : IReservationsInstruction 10 | { 11 | private readonly Reservation reservation; 12 | private readonly Func continuation; 13 | 14 | public Create( 15 | Reservation reservation, 16 | Func continuation) 17 | { 18 | this.reservation = reservation; 19 | this.continuation = continuation; 20 | } 21 | 22 | public TResult Accept( 23 | IReservationsInstructionVisitor visitor) 24 | { 25 | return visitor.VisitCreate(reservation, continuation); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Free.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class Free : IReservationsProgram 10 | { 11 | private readonly IReservationsInstruction> i; 12 | 13 | public Free(IReservationsInstruction> i) 14 | { 15 | this.i = i; 16 | } 17 | 18 | public TResult Accept( 19 | IReservationsProgramVisitor visitor) 20 | { 21 | return visitor.VisitFree(this.i); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IMaybe.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IMaybe 10 | { 11 | TResult Accept(IMaybeVisitor visitor); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IMaybeVisitor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IMaybeVisitor 10 | { 11 | TResult VisitNothing { get; } 12 | 13 | TResult VisitJust(T just); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IMaîtreD.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IMaîtreD 10 | { 11 | IReservationsProgram> TryAccept(Reservation reservation); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IReservationsInstruction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IReservationsInstruction 10 | { 11 | TResult Accept( 12 | IReservationsInstructionVisitor visitor); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IReservationsInstructionVisitor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IReservationsInstructionVisitor 10 | { 11 | TResult VisitIsReservationInFuture( 12 | Reservation reservation, 13 | Func continuation); 14 | TResult VisitReadReservations( 15 | DateTimeOffset date, 16 | Func, T> continuation); 17 | TResult VisitCreate( 18 | Reservation reservation, 19 | Func continuation); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IReservationsProgram.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IReservationsProgram 10 | { 11 | TResult Accept( 12 | IReservationsProgramVisitor visitor); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IReservationsProgramVisitor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public interface IReservationsProgramVisitor 10 | { 11 | TResult VisitFree(IReservationsInstruction> i); 12 | TResult VisitPure(T x); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CSharp/BookingApi/IsReservationInFuture.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class IsReservationInFuture : IReservationsInstruction 10 | { 11 | private readonly Reservation reservation; 12 | private readonly Func continuation; 13 | 14 | public IsReservationInFuture( 15 | Reservation reservation, 16 | Func continuation) 17 | { 18 | this.reservation = reservation; 19 | this.continuation = continuation; 20 | } 21 | 22 | public TResult Accept( 23 | IReservationsInstructionVisitor visitor) 24 | { 25 | return 26 | visitor.VisitIsReservationInFuture(reservation, continuation); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Just.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public sealed class Just : IMaybe 10 | { 11 | private readonly T value; 12 | 13 | public Just(T value) 14 | { 15 | this.value = value; 16 | } 17 | 18 | public TResult Accept(IMaybeVisitor visitor) 19 | { 20 | return visitor.VisitJust(this.value); 21 | } 22 | 23 | public override bool Equals(object obj) 24 | { 25 | var other = obj as Just; 26 | if (other == null) 27 | return base.Equals(obj); 28 | 29 | return object.Equals(this.value, other.value); 30 | } 31 | 32 | public override int GetHashCode() 33 | { 34 | if (this.value == null) 35 | return 0; 36 | 37 | return this.value.GetHashCode(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Maybe.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public static class Maybe 10 | { 11 | public static bool IsNothing(this IMaybe source) 12 | { 13 | return source.Accept(new IsNothingVisitor()); 14 | } 15 | 16 | private class IsNothingVisitor : IMaybeVisitor 17 | { 18 | public bool VisitNothing => true; 19 | 20 | public bool VisitJust(T just) 21 | { 22 | return false; 23 | } 24 | } 25 | 26 | public static bool IsJust(this IMaybe source) 27 | { 28 | return !source.IsNothing(); 29 | } 30 | 31 | public static T GetValueOrDefault(this IMaybe source, T defaultValue) 32 | { 33 | return source.Accept(new FromMaybeVisitor(defaultValue)); 34 | } 35 | 36 | private class FromMaybeVisitor : IMaybeVisitor 37 | { 38 | private readonly T defaultValue; 39 | 40 | public FromMaybeVisitor(T defaultValue) 41 | { 42 | this.defaultValue = defaultValue; 43 | } 44 | 45 | public T VisitNothing => this.defaultValue; 46 | 47 | public T VisitJust(T just) 48 | { 49 | return just; 50 | } 51 | } 52 | 53 | // Functor 54 | public static IMaybe Select( 55 | this IMaybe source, 56 | Func selector) 57 | { 58 | return source.Accept(new SelectMaybeVisitor(selector)); 59 | } 60 | 61 | private class SelectMaybeVisitor : 62 | IMaybeVisitor> 63 | { 64 | private readonly Func selector; 65 | 66 | public SelectMaybeVisitor(Func selector) 67 | { 68 | this.selector = selector; 69 | } 70 | 71 | public IMaybe VisitNothing 72 | { 73 | get { return new Nothing(); } 74 | } 75 | 76 | public IMaybe VisitJust(T just) 77 | { 78 | return new Just(this.selector(just)); 79 | } 80 | } 81 | 82 | // Monad 83 | public static IMaybe SelectMany( 84 | this IMaybe source, 85 | Func> selector) 86 | { 87 | return source.Accept( 88 | new SelectManyMaybeVisitor(selector)); 89 | } 90 | 91 | private class SelectManyMaybeVisitor : 92 | IMaybeVisitor> 93 | { 94 | private readonly Func> selector; 95 | 96 | public SelectManyMaybeVisitor(Func> selector) 97 | { 98 | this.selector = selector; 99 | } 100 | 101 | public IMaybe VisitNothing 102 | { 103 | get { return new Nothing(); } 104 | } 105 | 106 | public IMaybe VisitJust(T just) 107 | { 108 | return this.selector(just); 109 | } 110 | } 111 | 112 | public static IMaybe SelectMany( 113 | this IMaybe source, 114 | Func> k, 115 | Func s) 116 | { 117 | return source 118 | .SelectMany(x => k(x) 119 | .SelectMany(y => new Just(s(x, y)))); 120 | } 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /CSharp/BookingApi/MaîtreD.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class MaîtreD : IMaîtreD 10 | { 11 | public MaîtreD(int capacity) 12 | { 13 | Capacity = capacity; 14 | } 15 | 16 | public int Capacity { get; } 17 | 18 | public IReservationsProgram> TryAccept(Reservation reservation) 19 | { 20 | return 21 | from isInFuture in ReservationsProgram.IsReservationInFuture(reservation) 22 | from _ in ReservationsProgram.Guard(isInFuture) 23 | 24 | from reservations in ReservationsProgram.ReadReservations(reservation.Date) 25 | let reservedSeats = reservations.Sum(r => r.Quantity) 26 | from __ in ReservationsProgram.Guard(reservedSeats + reservation.Quantity <= Capacity) 27 | 28 | from ___ in ReservationsProgram.Do(() => { reservation.IsAccepted = true; }) 29 | from id in ReservationsProgram.Create(reservation) 30 | select id; 31 | } 32 | 33 | public MaîtreD WithCapacity(int newCapacity) 34 | { 35 | return new MaîtreD(newCapacity); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Nothing.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public sealed class Nothing : IMaybe 10 | { 11 | public TResult Accept(IMaybeVisitor visitor) 12 | { 13 | return visitor.VisitNothing; 14 | } 15 | 16 | public override bool Equals(object obj) 17 | { 18 | return obj is Nothing; 19 | } 20 | 21 | public override int GetHashCode() 22 | { 23 | return 0; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BookingApi")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BookingApi")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1ad71eec-b0f5-4917-a5c5-2e33abbdfb13")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Pure.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class Pure : IReservationsProgram 10 | { 11 | private readonly T x; 12 | 13 | public Pure(T x) 14 | { 15 | this.x = x; 16 | } 17 | 18 | public TResult Accept( 19 | IReservationsProgramVisitor visitor) 20 | { 21 | return visitor.VisitPure(this.x); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /CSharp/BookingApi/ReadReservations.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class ReadReservations : IReservationsInstruction 10 | { 11 | private readonly DateTimeOffset date; 12 | private readonly Func, T> continuation; 13 | 14 | public ReadReservations( 15 | DateTimeOffset date, 16 | Func, T> continuation) 17 | { 18 | this.date = date; 19 | this.continuation = continuation; 20 | } 21 | 22 | public TResult Accept( 23 | IReservationsInstructionVisitor visitor) 24 | { 25 | return visitor.VisitReadReservations(date, continuation); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Reservation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public class Reservation 10 | { 11 | public DateTimeOffset Date { get; set; } 12 | public string Email { get; set; } 13 | public string Name { get; set; } 14 | public int Quantity { get; set; } 15 | public bool IsAccepted { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /CSharp/BookingApi/ReservationsInstruction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public static class ReservationsInstruction 10 | { 11 | public static IReservationsInstruction Select( 12 | this IReservationsInstruction source, 13 | Func selector) 14 | { 15 | return source.Accept( 16 | new SelectReservationsInstructionVisitor( 17 | selector)); 18 | } 19 | 20 | private class SelectReservationsInstructionVisitor : 21 | IReservationsInstructionVisitor> 22 | { 23 | private readonly Func selector; 24 | 25 | public SelectReservationsInstructionVisitor( 26 | Func selector) 27 | { 28 | this.selector = selector; 29 | } 30 | 31 | public IReservationsInstruction VisitIsReservationInFuture( 32 | Reservation reservation, 33 | Func continuation) 34 | { 35 | return new IsReservationInFuture( 36 | reservation, 37 | b => selector(continuation(b))); 38 | } 39 | 40 | public IReservationsInstruction VisitReadReservations( 41 | DateTimeOffset date, 42 | Func, T> continuation) 43 | { 44 | return new ReadReservations( 45 | date, 46 | d => selector(continuation(d))); 47 | } 48 | 49 | public IReservationsInstruction VisitCreate( 50 | Reservation reservation, 51 | Func continuation) 52 | { 53 | return new Create( 54 | reservation, 55 | r => selector(continuation(r))); 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /CSharp/BookingApi/ReservationsMaybe.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public static class ReservationsMaybe 10 | { 11 | public static IReservationsProgram> SelectMany( 12 | this IReservationsProgram> source, 13 | Func>> selector) 14 | { 15 | return source.SelectMany(x => x.Accept(new SelectManyMaybeVisitor(selector))); 16 | } 17 | 18 | private class SelectManyMaybeVisitor : 19 | IMaybeVisitor>> 20 | { 21 | private readonly Func>> selector; 22 | 23 | public SelectManyMaybeVisitor(Func>> selector) 24 | { 25 | this.selector = selector; 26 | } 27 | 28 | public IReservationsProgram> VisitNothing 29 | { 30 | get 31 | { 32 | return new Pure>(new Nothing()); 33 | } 34 | } 35 | 36 | public IReservationsProgram> VisitJust(T just) 37 | { 38 | return this.selector(just); 39 | } 40 | } 41 | 42 | public static IReservationsProgram> SelectMany( 43 | this IReservationsProgram> source, 44 | Func>> k, 45 | Func s) 46 | { 47 | return source 48 | .SelectMany(x => k(x) 49 | .SelectMany(y => new Pure>(new Just(s(x, y))))); 50 | } 51 | 52 | public static IReservationsProgram> Select( 53 | this IReservationsProgram> source, 54 | Func selector) 55 | { 56 | return source.SelectMany(x => new Pure>(new Just(selector(x)))); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /CSharp/BookingApi/ReservationsProgram.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Ploeh.Samples.BookingApi 8 | { 9 | public static class ReservationsProgram 10 | { 11 | // Functor 12 | public static IReservationsProgram Select( 13 | this IReservationsProgram source, 14 | Func selector) 15 | { 16 | return source.SelectMany(x => new Pure(selector(x))); 17 | } 18 | 19 | // Monad 20 | public static IReservationsProgram SelectMany( 21 | this IReservationsProgram source, 22 | Func> selector) 23 | { 24 | return source.Accept( 25 | new SelectManyReservationsProgramVisitor( 26 | selector)); 27 | } 28 | 29 | private class SelectManyReservationsProgramVisitor : 30 | IReservationsProgramVisitor> 31 | { 32 | private readonly Func> selector; 33 | 34 | public SelectManyReservationsProgramVisitor( 35 | Func> selector) 36 | { 37 | this.selector = selector; 38 | } 39 | 40 | public IReservationsProgram VisitFree( 41 | IReservationsInstruction> i) 42 | { 43 | return new Free(i.Select(p => p.SelectMany(selector))); 44 | } 45 | 46 | public IReservationsProgram VisitPure(T x) 47 | { 48 | return selector(x); 49 | } 50 | } 51 | 52 | // Lifts 53 | public static IReservationsProgram> IsReservationInFuture(Reservation reservation) 54 | { 55 | return new Free>( 56 | new IsReservationInFuture>>( 57 | reservation, 58 | x => new Pure>(new Just(x)))); 59 | } 60 | 61 | public static IReservationsProgram>> ReadReservations( 62 | DateTimeOffset date) 63 | { 64 | return new Free>>( 65 | new ReadReservations>>>( 66 | date, 67 | x => new Pure>>(new Just>(x)))); 68 | } 69 | 70 | public static IReservationsProgram> Create(Reservation reservation) 71 | { 72 | return new Free>( 73 | new Create>>( 74 | reservation, 75 | x => new Pure>(new Just(x)))); 76 | } 77 | 78 | public static IReservationsProgram> Guard(bool b) 79 | { 80 | if (b) 81 | return new Pure>(new Just(Unit.Instance)); 82 | else 83 | return new Pure>(new Nothing()); 84 | } 85 | 86 | public static IReservationsProgram> Do(Action action) 87 | { 88 | action(); 89 | return new Pure>(new Just(Unit.Instance)); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /CSharp/BookingApi/Unit.cs: -------------------------------------------------------------------------------- 1 | namespace Ploeh.Samples.BookingApi 2 | { 3 | public class Unit 4 | { 5 | public readonly static Unit Instance = new Unit(); 6 | 7 | private Unit() { } 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/BookingApi/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CSharp/Build.fsx: -------------------------------------------------------------------------------- 1 | #r @"packages/FAKE.4.64.4/tools/FakeLib.dll" 2 | 3 | open Fake 4 | open Fake.Testing 5 | 6 | Target "Build" <| fun _ -> 7 | !! "**/BookingApi.sln" 8 | |> MSBuildRelease "" "Rebuild" 9 | |> ignore 10 | 11 | Target "Test" <| fun _ -> 12 | !! "*/bin/Release/Ploeh.Samples.*Tests.dll" 13 | |> xUnit2 (fun p -> { p with Parallel = ParallelMode.All }) 14 | 15 | "Build" 16 | ==> "Test" 17 | 18 | RunTargetOrDefault "Test" 19 | -------------------------------------------------------------------------------- /CSharp/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | packages/FAKE.4.64.4/tools/FAKE.exe Build.fsx 3 | -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.4.0.1/AutoFixture.4.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/AutoFixture.4.0.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.dll -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.pdb -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.dll -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.pdb -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.Xunit2.4.0.1/AutoFixture.Xunit2.4.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/AutoFixture.Xunit2.4.0.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.dll -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.pdb -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.dll -------------------------------------------------------------------------------- /CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/FAKE.4.64.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/FAKE.4.64.4.nupkg -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Argu.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Argu.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Argu.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Argu.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FAKE.FSharp.Compiler.Service.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.FSharp.Compiler.Service.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FAKE.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.exe -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\FAKE\CommandlineParams.fs*src/app/FAKE/CommandlineParams.fs 8 | D:\code\fake\src\app\FAKE\Cli.fs*src/app/FAKE/Cli.fs 9 | D:\code\fake\src\app\FAKE\Program.fs*src/app/FAKE/Program.fs 10 | SRCSRV: end ------------------------------------------------ 11 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.optdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.optdata -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.sigdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.sigdata -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.Deploy.Lib\SshRsaModule.fs*src/app/Fake.Deploy.Lib/SshRsaModule.fs 8 | D:\code\fake\src\app\Fake.Deploy.Lib\Json.fs*src/app/Fake.Deploy.Lib/Json.fs 9 | D:\code\fake\src\app\Fake.Deploy.Lib\HttpHeaderHelper.fs*src/app/Fake.Deploy.Lib/HttpHeaderHelper.fs 10 | D:\code\fake\src\app\Fake.Deploy.Lib\HttpListenerHelper.fs*src/app/Fake.Deploy.Lib/HttpListenerHelper.fs 11 | D:\code\fake\src\app\Fake.Deploy.Lib\FakeDeployAgentHelper.fs*src/app/Fake.Deploy.Lib/FakeDeployAgentHelper.fs 12 | SRCSRV: end ------------------------------------------------ 13 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.exe -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.Deploy\AppConfig.fs*src/app/Fake.Deploy/AppConfig.fs 8 | D:\code\fake\src\app\Fake.Deploy\Logger.fs*src/app/Fake.Deploy/Logger.fs 9 | D:\code\fake\src\app\Fake.Deploy\DeploymentHelper.fs*src/app/Fake.Deploy/DeploymentHelper.fs 10 | D:\code\fake\src\app\Fake.Deploy\DeployAgentModule.fs*src/app/Fake.Deploy/DeployAgentModule.fs 11 | D:\code\fake\src\app\Fake.Deploy\DeploymentAgent.fs*src/app/Fake.Deploy/DeploymentAgent.fs 12 | D:\code\fake\src\app\Fake.Deploy\AuthenticatedUser.fs*src/app/Fake.Deploy/AuthenticatedUser.fs 13 | D:\code\fake\src\app\Fake.Deploy\UserMapper.fs*src/app/Fake.Deploy/UserMapper.fs 14 | D:\code\fake\src\app\Fake.Deploy\AuthModule.fs*src/app/Fake.Deploy/AuthModule.fs 15 | D:\code\fake\src\app\Fake.Deploy\JSonSerializers.fs*src/app/Fake.Deploy/JSonSerializers.fs 16 | D:\code\fake\src\app\Fake.Deploy\NancyBootStrapper.fs*src/app/Fake.Deploy/NancyBootStrapper.fs 17 | D:\code\fake\src\app\Fake.Deploy\Services.fs*src/app/Fake.Deploy/Services.fs 18 | D:\code\fake\src\app\Fake.Deploy\Installers.fs*src/app/Fake.Deploy/Installers.fs 19 | D:\code\fake\src\app\Fake.Deploy\Program.fs*src/app/Fake.Deploy/Program.fs 20 | SRCSRV: end ------------------------------------------------ 21 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fake.Experimental 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.Experimental\ComputationExpressions.fs*src/app/Fake.Experimental/ComputationExpressions.fs 8 | SRCSRV: end ------------------------------------------------ 9 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.FluentMigrator\FluentMigratorHelper.fs*src/app/Fake.FluentMigrator/FluentMigratorHelper.fs 8 | SRCSRV: end ------------------------------------------------ 9 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fake.Gallio 4 | 5 | 6 | 7 | Test filters (i.e. exclusion rules) 8 | 9 | 10 | 11 | 12 | Sets the format string to use to generate the reports filenames. 13 | Any occurence of {0} will be replaced by the date, and any occurrence of {1} by the time. 14 | The default format string is test-report-{0}-{1}. 15 | 16 | 17 | 18 | 19 | Sets the name of the directory where the reports will be put. 20 | The directory will be created if it doesn't exist. Existing files will be overwritten. 21 | The default report directory is "Reports". 22 | 23 | 24 | 25 | 26 | Gets or sets the version of the .Net runtime to use for running tests. 27 | For the CLR, this must be the name of one of the framework directories in %SystemRoot%\Microsoft.Net\Framework. eg. 'v2.0.50727'. 28 | The default is null which uses the most recent installed and supported framework. 29 | 30 | 31 | 32 | 33 | Attaches the debugger to the test process when set to true. 34 | 35 | 36 | 37 | 38 | Shadow copying allows the original assemblies to be modified while the tests are running. 39 | However, shadow copying may occasionally cause some tests to fail if they depend on their original location. 40 | 41 | 42 | 43 | 44 | Gets or sets the relative or absolute path of the working directory 45 | or null to use a default value selected by the consumer. 46 | 47 | 48 | 49 | 50 | Gets or sets the relative or absolute path of the application base directory, 51 | or null to use a default value selected by the consumer. 52 | 53 | 54 | 55 | 56 | Additional Gallio plugin directories to search recursively. 57 | 58 | 59 | 60 | 61 | The list of directories used for loading referenced assemblies and other dependent resources. 62 | 63 | 64 | 65 | 66 | Specifies the type, assembly, and parameters of custom test runner 67 | extensions to use during the test run. 68 | The value must be in the form '[Namespace.]Type,Assembly[;Parameters]' 69 | 70 | 71 | 72 | 73 | The types supported "out of the box" are: Local, IsolatedAppDomain 74 | and IsolatedProcess (default), but more types could be available as plugins. 75 | 76 | 77 | 78 | 79 | Specifies option property key/value pairs for the test runner. 80 | 81 | 82 | 83 | 84 | Specifies option property key/value pairs for the report formatter 85 | 86 | 87 | 88 | 89 | Sets whether to show generated reports in a window using the default system application 90 | registered to the report file type. 91 | 92 | 93 | 94 | 95 | Sets the maximum amount of time (in seconds) the tests can run 96 | before they are canceled. 97 | 98 | 99 | 100 | 101 | Sets whether to ignore annotations when determining the result code. 102 | 103 | 104 | 105 | 106 | Sets whether to echo results to the screen as tests finish. 107 | 108 | 109 | 110 | 111 | Sets whether to load the tests but not run them. 112 | 113 | 114 | 115 | 116 | Runs tests through Gallio. 117 | 118 | Function that modifies the default parameters 119 | List of test assemblies 120 | 121 | 122 | 123 | Default Gallio parameters 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.Gallio\GallioHelper.fs*src/app/Fake.Gallio/GallioHelper.fs 8 | SRCSRV: end ------------------------------------------------ 9 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fake.IIS 4 | 5 | 6 | 7 | Options for using IISExpress 8 | 9 | 10 | 11 | 12 | Opens the given website in the browser 13 | 14 | 15 | 16 | 17 | Opens the given url in the browser 18 | 19 | 20 | 21 | 22 | This task starts the given site in IISExpress with the given ConfigFile. 23 | ## Parameters 24 | 25 | - `setParams` - Function used to overwrite the default parameters. 26 | - `configFileName` - The file name of the IISExpress configfile. 27 | - `siteId` - The id (in the config file) of the website to run. 28 | 29 | ## Sample 30 | 31 | HostWebsite (fun p -> { p with ToolPath = "iisexpress.exe" }) "configfile.config" 1 32 | 33 | 34 | 35 | 36 | Create a IISExpress config file from a given template 37 | 38 | 39 | 40 | 41 | IISExpress default parameters - tries to locate the iisexpress.exe 42 | 43 | 44 | 45 | 46 | Contains tasks to host webprojects in IIS Express. 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.IIS\IISExpress.fs*src/app/Fake.IIS/IISExpress.fs 8 | D:\code\fake\src\app\Fake.IIS\IISHelper.fs*src/app/Fake.IIS/IISHelper.fs 9 | SRCSRV: end ------------------------------------------------ 10 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fake.SQL 4 | 5 | 6 | Runs all sql scripts from the given directory on the server. 7 | Used to open the connection to the database. 8 | All *.sql files inside this directory and all subdirectories will be run. 9 | 10 | 11 | Runs the given sql scripts on the server. 12 | Used to open the connection to the database. 13 | The scripts which will be run. 14 | 15 | 16 | Drops and creates the database (dropped if db exists. created nonetheless) 17 | Used to open the connection to the database. 18 | 19 | 20 | Replaces the database files from a cache. 21 | If the files in the cache are not up to date, they will be refreshed. 22 | Used to open the connection to the database. 23 | The directory where the attached files will live. 24 | The file cache. If the files in the cache are not up to date, they will be refreshed. 25 | The original database files. 26 | AttachOptions for Sql server. 27 | 28 | 29 | 30 | Replaces the database files 31 | 32 | 33 | 34 | 35 | Replaces the database files 36 | 37 | 38 | 39 | 40 | Closes the connection to the server 41 | 42 | 43 | 44 | Runs a sql script on the server. 45 | Used as a connection to the database. 46 | The script which will be run. 47 | 48 | 49 | 50 | Creates a new db on the given server 51 | 52 | 53 | 54 | 55 | Attach a database 56 | 57 | 58 | 59 | 60 | Detaches a database 61 | 62 | 63 | 64 | 65 | Kills all processes with the given server info 66 | 67 | 68 | 69 | 70 | Drops the given InitialCatalog from the server (if it exists) 71 | 72 | 73 | 74 | 75 | Checks whether the given InitialCatalog exists on the server 76 | 77 | 78 | 79 | 80 | Gets the initial catalog as database instance 81 | 82 | 83 | 84 | 85 | Checks whether the given Database exists on the server 86 | 87 | 88 | 89 | 90 | Gets the name of the server 91 | 92 | 93 | 94 | 95 | Gets the initial catalog name 96 | 97 | 98 | 99 | 100 | gets the DatabaseNames from the server 101 | 102 | 103 | 104 | 105 | gets the DatabaseNames from the server 106 | 107 | 108 | 109 | 110 | Gets a connection to the SQL server and an instance to the ConnectionStringBuilder 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb.srcsrv: -------------------------------------------------------------------------------- 1 | SRCSRV: ini ------------------------------------------------ 2 | VERSION=2 3 | SRCSRV: variables ------------------------------------------ 4 | SRCSRVVERCTRL=https 5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2% 6 | SRCSRV: source files --------------------------------------- 7 | D:\code\fake\src\app\Fake.SQL\SQLServer.fs*src/app/Fake.SQL/SQLServer.fs 8 | SRCSRV: end ------------------------------------------------ 9 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FakeLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FakeLib.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FakeLib.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FakeLib.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/HashLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/HashLib.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.resources.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.ConnectionInfo.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.ConnectionInfo.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Management.Sdk.Sfc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Management.Sdk.Sfc.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Smo.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Smo.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.Administration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.Administration.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.XmlTransform.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.XmlTransform.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Mdb.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Mdb.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Pdb.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Pdb.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Rocks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Rocks.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/NLog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/NLog.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Nancy.Authentication.Stateless 5 | 6 | 7 | 8 | 9 | Nancy stateless authentication implementation 10 | 11 | 12 | 13 | 14 | Enables stateless authentication for the application 15 | 16 | Pipelines to add handlers to (usually "this") 17 | Stateless authentication configuration 18 | 19 | 20 | 21 | Enables stateless authentication for a module 22 | 23 | Module to add handlers to (usually "this") 24 | Stateless authentication configuration 25 | 26 | 27 | 28 | Gets the pre request hook for loading the authenticated user's details 29 | from apikey given in request. 30 | 31 | Stateless authentication configuration to use 32 | Pre request hook delegate 33 | 34 | 35 | 36 | Configuration options for stateless authentication 37 | 38 | 39 | 40 | 41 | Initializes a new instance of the class. 42 | 43 | 44 | 45 | 46 | Gets a value indicating whether the configuration is valid or not. 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Nancy.Hosting.Self.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Hosting.Self.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Nancy.Serialization.JsonNet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Serialization.JsonNet.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Nancy.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/NuGet.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/NuGet.Core.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/README.markdown: -------------------------------------------------------------------------------- 1 | # FAKE - F# Make 2 | 3 | [![Join the chat at https://gitter.im/fsharp/FAKE](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/fsharp/FAKE?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 4 | 5 | "FAKE - F# Make" is a cross platform build automation system. Due to its integration 6 | in F#, all benefits of the .NET Framework and functional programming can be used, including 7 | the extensive class library, powerful debuggers and integrated development environments like 8 | Visual Studio or MonoDevelop, which provide syntax highlighting and code completion. 9 | 10 | The new DSL was designed to be succinct, typed, declarative, extensible and easy to use. 11 | 12 | See the [project home page](http://fsharp.github.com/FAKE/) for tutorials and [API documentation](http://fsharp.github.io/FAKE/apidocs/index.html). 13 | 14 | # Build the project 15 | 16 | * Mono: Run *build.sh* [![Travis build status](https://travis-ci.org/fsharp/FAKE.png)](https://travis-ci.org/fsharp/FAKE) 17 | * Windows: Run *build.cmd* [![AppVeyor build status](https://ci.appveyor.com/api/projects/status/lk1dfo1qi99ri78f)](https://ci.appveyor.com/project/SteffenForkmann/fake) 18 | 19 | [![Issue Stats](http://www.issuestats.com/github/fsharp/FAKE/badge/pr)](http://www.issuestats.com/github/fsharp/FAKE) [![Issue Stats](http://www.issuestats.com/github/fsharp/FAKE/badge/issue)](http://www.issuestats.com/github/fsharp/FAKE) 20 | 21 | [![NuGet Badge](https://buildstats.info/nuget/FAKE)](https://www.nuget.org/packages/FAKE) 22 | 23 | ## How to contribute code 24 | 25 | See the [contributing page](http://fsharp.github.com/FAKE/contributing.html). 26 | 27 | ## Maintainers 28 | 29 | Although this project is hosted in the [fsharp](https://github.com/fsharp) repository for historical reasons, it is _not_ maintained and managed by the F# Core Engineering Group. The F# Core Engineering Group acknowledges that the independent owner and maintainer of this project is [Steffen Forkmann](http://github.com/forki). 30 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Renci.SshNet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Renci.SshNet.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Serilog.Sinks.NLog 5 | 6 | 7 | 8 | 9 | Adds the WriteTo.NLog() extension method to . 10 | 11 | 12 | 13 | 14 | Adds a sink that writes adapted log events to NLog. 15 | 16 | The logger configuration. 17 | The minimum log event level required in order to write an event to the sink. 18 | Supplies culture-specific formatting information, or null. 19 | Logger configuration, allowing configuration to continue. 20 | A required parameter is null. 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/Serilog.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.pdb -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.Rules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.Rules.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/StyleCop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Buffers.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Diagnostics.DiagnosticSource.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Diagnostics.DiagnosticSource.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Extensions.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.Net.Http.Primitives 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Runtime.InteropServices.RuntimeInformation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Runtime.InteropServices.RuntimeInformation.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.Threading.Tasks.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Threading.Tasks.Extensions.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/System.ValueTuple.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.ValueTuple.dll -------------------------------------------------------------------------------- /CSharp/packages/FAKE.4.64.4/tools/VSFile.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/VSFile.dll -------------------------------------------------------------------------------- /CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/System.Threading.Tasks.Extensions.4.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/System.Threading.Tasks.Extensions.4.3.0.nupkg -------------------------------------------------------------------------------- /CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/ThirdPartyNotices.txt: -------------------------------------------------------------------------------- 1 | This Microsoft .NET Library may incorporate components from the projects listed 2 | below. Microsoft licenses these components under the Microsoft .NET Library 3 | software license terms. The original copyright notices and the licenses under 4 | which Microsoft received such components are set forth below for informational 5 | purposes only. Microsoft reserves all rights not expressly granted herein, 6 | whether by implication, estoppel or otherwise. 7 | 8 | 1. .NET Core (https://github.com/dotnet/core/) 9 | 10 | .NET Core 11 | Copyright (c) .NET Foundation and Contributors 12 | 13 | The MIT License (MIT) 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. -------------------------------------------------------------------------------- /CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/netstandard1.0/System.Threading.Tasks.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/netstandard1.0/System.Threading.Tasks.Extensions.dll -------------------------------------------------------------------------------- /CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll -------------------------------------------------------------------------------- /CSharp/packages/System.ValueTuple.4.3.0/System.ValueTuple.4.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/System.ValueTuple.4.3.0.nupkg -------------------------------------------------------------------------------- /CSharp/packages/System.ValueTuple.4.3.0/ThirdPartyNotices.txt: -------------------------------------------------------------------------------- 1 | This Microsoft .NET Library may incorporate components from the projects listed 2 | below. Microsoft licenses these components under the Microsoft .NET Library 3 | software license terms. The original copyright notices and the licenses under 4 | which Microsoft received such components are set forth below for informational 5 | purposes only. Microsoft reserves all rights not expressly granted herein, 6 | whether by implication, estoppel or otherwise. 7 | 8 | 1. .NET Core (https://github.com/dotnet/core/) 9 | 10 | .NET Core 11 | Copyright (c) .NET Foundation and Contributors 12 | 13 | The MIT License (MIT) 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. -------------------------------------------------------------------------------- /CSharp/packages/System.ValueTuple.4.3.0/lib/netstandard1.0/System.ValueTuple.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/lib/netstandard1.0/System.ValueTuple.dll -------------------------------------------------------------------------------- /CSharp/packages/System.ValueTuple.4.3.0/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.2.3.1/xunit.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.2.3.1/xunit.2.3.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.analyzers.0.7.0/analyzers/dotnet/cs/xunit.analyzers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.analyzers.0.7.0/analyzers/dotnet/cs/xunit.analyzers.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.analyzers.0.7.0/tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | if($project.Object.SupportsPackageDependencyResolution) 4 | { 5 | if($project.Object.SupportsPackageDependencyResolution()) 6 | { 7 | # Do not install analyzers via install.ps1, instead let the project system handle it. 8 | return 9 | } 10 | } 11 | 12 | $analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve 13 | 14 | foreach($analyzersPath in $analyzersPaths) 15 | { 16 | if (Test-Path $analyzersPath) 17 | { 18 | # Install the language agnostic analyzers. 19 | foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) 20 | { 21 | if($project.Object.AnalyzerReferences) 22 | { 23 | $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) 24 | } 25 | } 26 | } 27 | } 28 | 29 | # $project.Type gives the language name like (C# or VB.NET) 30 | $languageFolder = "" 31 | if($project.Type -eq "C#") 32 | { 33 | $languageFolder = "cs" 34 | } 35 | if($project.Type -eq "VB.NET") 36 | { 37 | $languageFolder = "vb" 38 | } 39 | if($languageFolder -eq "") 40 | { 41 | return 42 | } 43 | 44 | foreach($analyzersPath in $analyzersPaths) 45 | { 46 | # Install language specific analyzers. 47 | $languageAnalyzersPath = join-path $analyzersPath $languageFolder 48 | if (Test-Path $languageAnalyzersPath) 49 | { 50 | foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) 51 | { 52 | if($project.Object.AnalyzerReferences) 53 | { 54 | $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.analyzers.0.7.0/tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | if($project.Object.SupportsPackageDependencyResolution) 4 | { 5 | if($project.Object.SupportsPackageDependencyResolution()) 6 | { 7 | # Do not uninstall analyzers via uninstall.ps1, instead let the project system handle it. 8 | return 9 | } 10 | } 11 | 12 | $analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve 13 | 14 | foreach($analyzersPath in $analyzersPaths) 15 | { 16 | # Uninstall the language agnostic analyzers. 17 | if (Test-Path $analyzersPath) 18 | { 19 | foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) 20 | { 21 | if($project.Object.AnalyzerReferences) 22 | { 23 | $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) 24 | } 25 | } 26 | } 27 | } 28 | 29 | # $project.Type gives the language name like (C# or VB.NET) 30 | $languageFolder = "" 31 | if($project.Type -eq "C#") 32 | { 33 | $languageFolder = "cs" 34 | } 35 | if($project.Type -eq "VB.NET") 36 | { 37 | $languageFolder = "vb" 38 | } 39 | if($languageFolder -eq "") 40 | { 41 | return 42 | } 43 | 44 | foreach($analyzersPath in $analyzersPaths) 45 | { 46 | # Uninstall language specific analyzers. 47 | $languageAnalyzersPath = join-path $analyzersPath $languageFolder 48 | if (Test-Path $languageAnalyzersPath) 49 | { 50 | foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) 51 | { 52 | if($project.Object.AnalyzerReferences) 53 | { 54 | try 55 | { 56 | $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) 57 | } 58 | catch 59 | { 60 | 61 | } 62 | } 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.analyzers.0.7.0/xunit.analyzers.0.7.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.analyzers.0.7.0/xunit.analyzers.0.7.0.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.assert.2.3.1/lib/netstandard1.1/xunit.assert.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.assert.2.3.1/lib/netstandard1.1/xunit.assert.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.assert.2.3.1/xunit.assert.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.assert.2.3.1/xunit.assert.2.3.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/build/xunit.core.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/build/xunit.core.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | true 7 | full 8 | true 9 | 10 | 11 | 12 | 13 | portable 14 | true 15 | true 16 | 17 | 18 | 19 | 20 | full 21 | 22 | 23 | 24 | xunit.execution.desktop.dll 25 | PreserveNewest 26 | False 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | true 7 | full 8 | true 9 | 10 | 11 | 12 | 13 | portable 14 | true 15 | true 16 | 17 | 18 | 19 | 20 | full 21 | 22 | 23 | 24 | xunit.execution.desktop.dll 25 | PreserveNewest 26 | False 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll.tdnet: -------------------------------------------------------------------------------- 1 | 2 | xUnit.net {0}.{1}.{2} build {3} 3 | xunit.runner.tdnet.dll 4 | Xunit.Runner.TdNet.TdNetRunner 5 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/build/xunit.runner.console.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildThisFileDirectory)..\tools\net452\xunit.console.exe 5 | $(MSBuildThisFileDirectory)..\tools\net452\xunit.console.x86.exe 6 | $(MSBuildThisFileDirectory)..\tools\netcoreapp1.0\xunit.console.dll 7 | $(MSBuildThisFileDirectory)..\tools\netcoreapp2.0\xunit.console.dll 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.abstractions.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.reporters.net452.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.reporters.net452.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.utility.net452.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.utility.net452.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.abstractions.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.deps.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeTarget": { 3 | "name": ".NETCoreApp,Version=v1.0", 4 | "signature": "93edd53712b3569addd1cfe9d1010ed90a13b8ee" 5 | }, 6 | "compilationOptions": {}, 7 | "targets": { 8 | ".NETCoreApp,Version=v1.0": { 9 | "xunit.console/99.99.99-dev": { 10 | "dependencies": { 11 | "xunit.runner.reporters": "99.99.99-dev" 12 | }, 13 | "runtime": { 14 | "xunit.console.dll": {} 15 | } 16 | }, 17 | "xunit.abstractions/2.0.1": { 18 | "runtime": { 19 | "lib/netstandard1.0/xunit.abstractions.dll": {} 20 | } 21 | }, 22 | "xunit.runner.reporters/99.99.99-dev": { 23 | "dependencies": { 24 | "xunit.runner.utility": "99.99.99-dev" 25 | }, 26 | "runtime": { 27 | "xunit.runner.reporters.netcoreapp10.dll": {} 28 | } 29 | }, 30 | "xunit.runner.utility/99.99.99-dev": { 31 | "dependencies": { 32 | "xunit.abstractions": "2.0.1" 33 | }, 34 | "runtime": { 35 | "xunit.runner.utility.netcoreapp10.dll": {} 36 | } 37 | } 38 | } 39 | }, 40 | "libraries": { 41 | "xunit.console/99.99.99-dev": { 42 | "type": "project", 43 | "serviceable": false, 44 | "sha512": "" 45 | }, 46 | "xunit.abstractions/2.0.1": { 47 | "type": "package", 48 | "serviceable": true, 49 | "sha512": "sha512-bDm/zdG5rnRDsobKuKwrvL4HccBdC0uvT12be6fG12P3d1U7u9Wkvfoq/PM2GeyIeb0Dtcmm/7k2oaawiqQ2Dg==", 50 | "path": "xunit.abstractions/2.0.1", 51 | "hashPath": "xunit.abstractions.2.0.1.nupkg.sha512" 52 | }, 53 | "xunit.runner.reporters/99.99.99-dev": { 54 | "type": "project", 55 | "serviceable": false, 56 | "sha512": "" 57 | }, 58 | "xunit.runner.utility/99.99.99-dev": { 59 | "type": "project", 60 | "serviceable": false, 61 | "sha512": "" 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp1.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "1.0.0" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.reporters.netcoreapp10.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.reporters.netcoreapp10.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.utility.netcoreapp10.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.utility.netcoreapp10.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.abstractions.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.reporters.netcoreapp10.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.reporters.netcoreapp10.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.utility.netcoreapp10.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.utility.netcoreapp10.dll -------------------------------------------------------------------------------- /CSharp/packages/xunit.runner.console.2.3.1/xunit.runner.console.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/xunit.runner.console.2.3.1.nupkg -------------------------------------------------------------------------------- /FSharp/.gitignore: -------------------------------------------------------------------------------- 1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) 2 | [Bb]in/ 3 | [Oo]bj/ 4 | 5 | # MsTest test results 6 | TestResults 7 | 8 | ## Ignore Visual Studio temporary files, build results, and 9 | ## files generated by popular Visual Studio add-ons. 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.sln.docstates 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Rr]elease/ 19 | x64/ 20 | *_i.c 21 | *_p.c 22 | *.ilk 23 | *.meta 24 | *.obj 25 | *.pch 26 | *.pgc 27 | *.pgd 28 | *.rsp 29 | *.sbr 30 | *.tlb 31 | *.tli 32 | *.tlh 33 | *.tmp 34 | *.log 35 | *.vspscc 36 | *.vssscc 37 | .builds 38 | 39 | # Visual C++ cache files 40 | ipch/ 41 | *.aps 42 | *.ncb 43 | *.opensdf 44 | *.sdf 45 | 46 | # Visual Studio profiler 47 | *.psess 48 | *.vsp 49 | *.vspx 50 | 51 | # Guidance Automation Toolkit 52 | *.gpState 53 | 54 | # ReSharper is a .NET coding add-in 55 | _ReSharper* 56 | 57 | # NCrunch 58 | *.ncrunch* 59 | .*crunch*.local.xml 60 | 61 | # Installshield output folder 62 | [Ee]xpress 63 | 64 | # DocProject is a documentation generator add-in 65 | DocProject/buildhelp/ 66 | DocProject/Help/*.HxT 67 | DocProject/Help/*.HxC 68 | DocProject/Help/*.hhc 69 | DocProject/Help/*.hhk 70 | DocProject/Help/*.hhp 71 | DocProject/Help/Html2 72 | DocProject/Help/html 73 | 74 | # Click-Once directory 75 | publish 76 | 77 | # Publish Web Output 78 | *.Publish.xml 79 | 80 | # Windows Azure Build Output 81 | csx 82 | *.build.csdef 83 | 84 | # Windows Store app package directory 85 | AppPackages/ 86 | 87 | # Backup & report files from converting an old project file to a newer 88 | # Visual Studio version. Backup files are not needed, because we have git ;-) 89 | _Upgr/ 90 | Backup*/ 91 | UpgradeLog*.XML 92 | 93 | # FAKE hidden directory 94 | .fake/ 95 | -------------------------------------------------------------------------------- /FSharp/BookingApi.UnitTests/AssemblyInfo.fs: -------------------------------------------------------------------------------- 1 | namespace BookingApi.UnitTests.AssemblyInfo 2 | 3 | open System.Reflection 4 | open System.Runtime.CompilerServices 5 | open System.Runtime.InteropServices 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [] 11 | [] 12 | [] 13 | [] 14 | [] 15 | [] 16 | [] 17 | [] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [] 23 | 24 | // The following GUID is for the ID of the typelib if this project is exposed to COM 25 | [] 26 | 27 | // Version information for an assembly consists of the following four values: 28 | // 29 | // Major Version 30 | // Minor Version 31 | // Build Number 32 | // Revision 33 | // 34 | // You can specify all the values or you can default the Build and Revision Numbers 35 | // by using the '*' as shown below: 36 | // [] 37 | [] 38 | [] 39 | 40 | do 41 | () -------------------------------------------------------------------------------- /FSharp/BookingApi.UnitTests/Gen.fs: -------------------------------------------------------------------------------- 1 | module Ploeh.Samples.BookingApi.UnitTests.Gen 2 | 3 | open System 4 | open Hedgehog 5 | open Ploeh.Samples.BookingApi.Reservations 6 | 7 | let reservation = gen { 8 | let! ticks = 9 | Range.linear DateTime.MinValue.Ticks DateTime.MaxValue.Ticks 10 | |> Gen.int64 11 | let! offset = Range.linear -12 12 |> Gen.int |> Gen.map float 12 | let d = new DateTimeOffset (ticks, TimeSpan.FromHours offset) 13 | 14 | let! name = Gen.alphaNum |> Gen.string (Range.linear 1 50) 15 | let! email = Gen.alphaNum |> Gen.string (Range.linear 1 50) 16 | let! quantity = Range.linear 1 100 |> Gen.int 17 | let! isAccepted = Gen.bool 18 | 19 | return { 20 | Date = d; 21 | Name = name; 22 | Email = email; 23 | Quantity = quantity; 24 | IsAccepted = isAccepted } } 25 | 26 | -------------------------------------------------------------------------------- /FSharp/BookingApi.UnitTests/Tests.fs: -------------------------------------------------------------------------------- 1 | module Ploeh.Samples.BookingApi.UnitTests.Tests 2 | 3 | open System 4 | open Xunit 5 | open Hedgehog 6 | open Swensen.Unquote 7 | open Ploeh.Samples.BookingApi 8 | open Reservations 9 | open Booking 10 | open Ploeh.Samples.BookingApi.UnitTests 11 | 12 | [] 13 | let ``tryAccept reservation in the past`` () = Property.check <| property { 14 | let! capacity = Range.linear 0 Int32.MaxValue |> Gen.int 15 | let! reservation = Gen.reservation 16 | let stub = function 17 | | IsReservationInFuture (_, next) -> next false 18 | | ReadReservations (_, next) -> next [] 19 | | Create (_, next) -> next 0 20 | 21 | let actual = tryAccept capacity reservation |> iter stub 22 | 23 | test <@ Option.isNone actual @> } 24 | 25 | [] 26 | let ``tryAccept reservation when capacity is insufficient`` () = Property.check <| property { 27 | let! i = Range.linear 0 Int32.MaxValue |> Gen.int 28 | let! reservations = Gen.reservation |> Gen.list (Range.linear 0 100) 29 | let! reservation = Gen.reservation 30 | let stub = function 31 | | IsReservationInFuture (_, next) -> next true 32 | | ReadReservations (_, next) -> next reservations 33 | | Create (_, next) -> next 0 34 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations 35 | let capacity = reservedSeats + reservation.Quantity - i 36 | 37 | let actual = tryAccept capacity reservation |> iter stub 38 | 39 | test <@ Option.isNone actual @> } 40 | 41 | [] 42 | let ``tryAccept happy path`` () = Property.check <| property { 43 | let! i = Range.linear 1 Int32.MaxValue |> Gen.int 44 | let! reservations = Gen.reservation |> Gen.list (Range.linear 0 100) 45 | let! reservation = Gen.reservation 46 | let! expected = Range.linearBounded () |> Gen.int 47 | let stub = function 48 | | IsReservationInFuture (_, next) -> next true 49 | | ReadReservations (_, next) -> next reservations 50 | | Create (r, next) -> test <@ r.IsAccepted @>; next expected 51 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations 52 | let capacity = reservedSeats + reservation.Quantity + i 53 | 54 | let actual = tryAccept capacity reservation |> iter stub 55 | 56 | Some expected =! actual } -------------------------------------------------------------------------------- /FSharp/BookingApi.UnitTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /FSharp/BookingApi.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BookingApi", "BookingApi\BookingApi.fsproj", "{751AB11C-EBEB-487E-AA79-7F05E71577D1}" 7 | EndProject 8 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BookingApi.UnitTests", "BookingApi.UnitTests\BookingApi.UnitTests.fsproj", "{8054B054-EA57-4234-BBC6-89302025408C}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {8054B054-EA57-4234-BBC6-89302025408C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {8054B054-EA57-4234-BBC6-89302025408C}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {8054B054-EA57-4234-BBC6-89302025408C}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {8054B054-EA57-4234-BBC6-89302025408C}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {6CEA0EF1-D211-4D31-BBF5-685EA7E0C34F} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /FSharp/BookingApi/AssemblyInfo.fs: -------------------------------------------------------------------------------- 1 | namespace BookingApi.AssemblyInfo 2 | 3 | open System.Reflection 4 | open System.Runtime.CompilerServices 5 | open System.Runtime.InteropServices 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [] 11 | [] 12 | [] 13 | [] 14 | [] 15 | [] 16 | [] 17 | [] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [] 23 | 24 | // The following GUID is for the ID of the typelib if this project is exposed to COM 25 | [] 26 | 27 | // Version information for an assembly consists of the following four values: 28 | // 29 | // Major Version 30 | // Minor Version 31 | // Build Number 32 | // Revision 33 | // 34 | // You can specify all the values or you can default the Build and Revision Numbers 35 | // by using the '*' as shown below: 36 | // [] 37 | [] 38 | [] 39 | 40 | do 41 | () -------------------------------------------------------------------------------- /FSharp/BookingApi/Booking.fs: -------------------------------------------------------------------------------- 1 | module Ploeh.Samples.BookingApi.Booking 2 | 3 | open Ploeh.Samples.BookingApi 4 | open Reservations 5 | open ReservationsOption 6 | 7 | let isReservationInFuture r = Free (IsReservationInFuture (r, Some >> Pure)) 8 | 9 | let readReservations d = Free (ReadReservations (d, Some >> Pure)) 10 | 11 | let create r = Free (Create (r, Some >> Pure)) 12 | 13 | // bool -> ReservationsProgram 14 | let guard = function 15 | | true -> Pure (Some ()) 16 | | false -> Pure None 17 | 18 | // int -> Reservation -> ReservationsProgram 19 | let tryAccept capacity reservation = reservationsOption { 20 | do! ReservationsOption.bind guard <| isReservationInFuture reservation 21 | 22 | let! reservations = readReservations reservation.Date 23 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations 24 | do! guard (reservedSeats + reservation.Quantity <= capacity) 25 | 26 | return! create { reservation with IsAccepted = true } } 27 | -------------------------------------------------------------------------------- /FSharp/BookingApi/BookingApi.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | 2.0 8 | 751ab11c-ebeb-487e-aa79-7f05e71577d1 9 | Library 10 | BookingApi 11 | Ploeh.Samples.BookingApi 12 | true 13 | v4.6.1 14 | 4.4.1.0 15 | true 16 | BookingApi 17 | 18 | 19 | 20 | 21 | true 22 | full 23 | false 24 | false 25 | bin\$(Configuration)\ 26 | DEBUG;TRACE 27 | 3 28 | bin\$(Configuration)\$(AssemblyName).XML 29 | 30 | 31 | pdbonly 32 | true 33 | true 34 | bin\$(Configuration)\ 35 | TRACE 36 | 3 37 | bin\$(Configuration)\$(AssemblyName).XML 38 | 39 | 40 | 11 41 | 42 | 43 | 44 | 45 | $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets 46 | 47 | 48 | 49 | 50 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | FSharp.Core 66 | FSharp.Core.dll 67 | $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\$(TargetFSharpCoreVersion)\FSharp.Core.dll 68 | 69 | 70 | 71 | 72 | 73 | ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll 74 | True 75 | 76 | 77 | 84 | -------------------------------------------------------------------------------- /FSharp/BookingApi/Reservations.fs: -------------------------------------------------------------------------------- 1 | module Ploeh.Samples.BookingApi.Reservations 2 | 3 | open System 4 | 5 | type Reservation = { 6 | Date : DateTimeOffset; 7 | Email : string; 8 | Name : string; 9 | Quantity : int; 10 | IsAccepted : bool } 11 | 12 | type ReservationsInstruction<'a> = 13 | | IsReservationInFuture of (Reservation * (bool -> 'a)) 14 | | ReadReservations of (DateTimeOffset * (Reservation list -> 'a)) 15 | | Create of (Reservation * (int -> 'a)) 16 | 17 | let private mapI f = function 18 | | IsReservationInFuture (x, next) -> IsReservationInFuture (x, next >> f) 19 | | ReadReservations (x, next) -> ReadReservations (x, next >> f) 20 | | Create (x, next) -> Create (x, next >> f) 21 | 22 | type ReservationsProgram<'a> = 23 | | Free of ReservationsInstruction> 24 | | Pure of 'a 25 | 26 | let rec bind f = function 27 | | Free x -> x |> mapI (bind f) |> Free 28 | | Pure x -> f x 29 | 30 | type ReservationsBuilder () = 31 | member this.Bind (x, f) = bind f x 32 | member this.Return x = Pure x 33 | member this.ReturnFrom x = x 34 | member this.Zero () = Pure () 35 | 36 | let reservations = ReservationsBuilder () 37 | 38 | let rec iter f = function 39 | | Pure x -> x 40 | | Free p -> f p |> iter f 41 | -------------------------------------------------------------------------------- /FSharp/BookingApi/ReservationsOption.fs: -------------------------------------------------------------------------------- 1 | module Ploeh.Samples.BookingApi.ReservationsOption 2 | 3 | open Ploeh.Samples.BookingApi.Reservations 4 | 5 | // ('a -> ReservationsProgram<'b option>) -> ReservationsProgram<'a option> -> 6 | // ReservationsProgram<'b option> 7 | let bind f x = reservations { 8 | let! x' = x 9 | match x' with 10 | | Some x'' -> return! f x'' 11 | | None -> return None } 12 | 13 | type ReservationsOptionBuilder () = 14 | member this.Bind (x, f) = bind f x 15 | member this.Return x = Pure (Some x) 16 | member this.ReturnFrom x = x 17 | member this.Zero () = Pure (Some ()) 18 | 19 | let reservationsOption = ReservationsOptionBuilder () 20 | -------------------------------------------------------------------------------- /FSharp/BookingApi/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/FSharp.Core.4.3.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/FSharp.Core.4.3.4.nupkg -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.optdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.optdata -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.sigdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.sigdata -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/cs/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/cs/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/de/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/de/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/en/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/en/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/es/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/es/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/fr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/fr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/it/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/it/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ja/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ja/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ko/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ko/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pl/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pl/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pt-BR/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pt-BR/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ru/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ru/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/tr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/tr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hans/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hans/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hant/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hant/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/cs/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/cs/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/de/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/de/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/en/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/en/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/es/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/es/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/fr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/fr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/it/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/it/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/ja/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ja/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/ko/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ko/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/pl/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pl/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/pt-BR/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pt-BR/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/ru/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ru/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/tr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/tr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hans/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hans/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hant/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hant/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.optdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.optdata -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.sigdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.sigdata -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/cs/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/cs/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/de/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/de/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/en/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/en/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/es/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/es/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/fr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/fr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/it/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/it/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ja/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ja/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ko/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ko/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pl/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pl/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pt-BR/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pt-BR/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ru/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ru/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/tr/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/tr/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hans/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hans/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hant/FSharp.Core.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hant/FSharp.Core.resources.dll -------------------------------------------------------------------------------- /FSharp/packages/Hedgehog.0.7.0.0/Hedgehog.0.7.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Hedgehog.0.7.0.0/Hedgehog.0.7.0.0.nupkg -------------------------------------------------------------------------------- /FSharp/packages/Hedgehog.0.7.0.0/lib/netstandard1.6/Hedgehog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Hedgehog.0.7.0.0/lib/netstandard1.6/Hedgehog.dll -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/System.Collections.Specialized.4.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/System.Collections.Specialized.4.0.1.nupkg -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ThirdPartyNotices.txt: -------------------------------------------------------------------------------- 1 | This Microsoft .NET Library may incorporate components from the projects listed 2 | below. Microsoft licenses these components under the Microsoft .NET Library 3 | software license terms. The original copyright notices and the licenses under 4 | which Microsoft received such components are set forth below for informational 5 | purposes only. Microsoft reserves all rights not expressly granted herein, 6 | whether by implication, estoppel or otherwise. 7 | 8 | 1. .NET Core (https://github.com/dotnet/core/) 9 | 10 | .NET Core 11 | Copyright (c) .NET Foundation and Contributors 12 | 13 | The MIT License (MIT) 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoAndroid10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoAndroid10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoTouch10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoTouch10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/net46/System.Collections.Specialized.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/net46/System.Collections.Specialized.dll -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/netstandard1.3/System.Collections.Specialized.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/netstandard1.3/System.Collections.Specialized.dll -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinios10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinios10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinmac20/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinmac20/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarintvos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarintvos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinwatchos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinwatchos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoAndroid10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoAndroid10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoTouch10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoTouch10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/net46/System.Collections.Specialized.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/net46/System.Collections.Specialized.dll -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/netstandard1.3/System.Collections.Specialized.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/netstandard1.3/System.Collections.Specialized.dll -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinios10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinios10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinmac20/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinmac20/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarintvos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarintvos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinwatchos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinwatchos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/System.ValueTuple.4.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/System.ValueTuple.4.3.1.nupkg -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ThirdPartyNotices.txt: -------------------------------------------------------------------------------- 1 | This Microsoft .NET Library may incorporate components from the projects listed 2 | below. Microsoft licenses these components under the Microsoft .NET Library 3 | software license terms. The original copyright notices and the licenses under 4 | which Microsoft received such components are set forth below for informational 5 | purposes only. Microsoft reserves all rights not expressly granted herein, 6 | whether by implication, estoppel or otherwise. 7 | 8 | 1. .NET Core (https://github.com/dotnet/core/) 9 | 10 | .NET Core 11 | Copyright (c) .NET Foundation and Contributors 12 | 13 | The MIT License (MIT) 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/MonoAndroid10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoAndroid10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/MonoTouch10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoTouch10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/netstandard1.0/System.ValueTuple.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/netstandard1.0/System.ValueTuple.dll -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinios10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinios10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinmac20/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinmac20/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/xamarintvos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarintvos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinwatchos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinwatchos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/MonoAndroid10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoAndroid10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/MonoTouch10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoTouch10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinios10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinios10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinmac20/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinmac20/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/xamarintvos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarintvos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinwatchos10/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinwatchos10/_._ -------------------------------------------------------------------------------- /FSharp/packages/Unquote.4.0.0/Unquote.4.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/Unquote.4.0.0.nupkg -------------------------------------------------------------------------------- /FSharp/packages/Unquote.4.0.0/lib/net45/Unquote.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/lib/net45/Unquote.dll -------------------------------------------------------------------------------- /FSharp/packages/Unquote.4.0.0/lib/netstandard2.0/Unquote.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/lib/netstandard2.0/Unquote.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/build/xunit.core.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/build/xunit.core.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | true 7 | full 8 | true 9 | 10 | 11 | 12 | 13 | portable 14 | true 15 | true 16 | 17 | 18 | 19 | 20 | full 21 | 22 | 23 | 24 | xunit.execution.desktop.dll 25 | PreserveNewest 26 | False 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | true 7 | full 8 | true 9 | 10 | 11 | 12 | 13 | portable 14 | true 15 | true 16 | 17 | 18 | 19 | 20 | full 21 | 22 | 23 | 24 | xunit.execution.desktop.dll 25 | PreserveNewest 26 | False 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /FSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll.tdnet: -------------------------------------------------------------------------------- 1 | 2 | xUnit.net {0}.{1}.{2} build {3} 3 | xunit.runner.tdnet.dll 4 | Xunit.Runner.TdNet.TdNetRunner 5 | -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll -------------------------------------------------------------------------------- /FSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg -------------------------------------------------------------------------------- /Haskell/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | dist-* 3 | cabal-dev 4 | *.o 5 | *.hi 6 | *.chi 7 | *.chs.h 8 | *.dyn_o 9 | *.dyn_hi 10 | .hpc 11 | .hsenv 12 | .cabal-sandbox/ 13 | cabal.sandbox.config 14 | *.prof 15 | *.aux 16 | *.hp 17 | *.eventlog 18 | .stack-work/ 19 | cabal.project.local 20 | .HTF/ 21 | .ghc.environment.* 22 | .vscode -------------------------------------------------------------------------------- /Haskell/BookingApi.cabal: -------------------------------------------------------------------------------- 1 | name: BookingApi 2 | version: 0.1.0.0 3 | -- synopsis: 4 | -- description: 5 | author: Mark Seemann 6 | copyright: 2018 Mark Seemann 7 | category: Web 8 | build-type: Simple 9 | cabal-version: >=1.10 10 | 11 | library 12 | hs-source-dirs: src 13 | exposed-modules: BookingApi 14 | build-depends: base >= 4.7 && < 5 15 | , time 16 | , free 17 | , transformers 18 | default-language: Haskell2010 19 | 20 | executable BookingApi-exe 21 | hs-source-dirs: app 22 | main-is: Main.hs 23 | ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall 24 | build-depends: base 25 | , time 26 | , free 27 | , transformers 28 | , BookingApi 29 | default-language: Haskell2010 30 | 31 | test-suite BookingApi-test 32 | type: exitcode-stdio-1.0 33 | hs-source-dirs: test 34 | main-is: Spec.hs 35 | build-depends: base 36 | , time 37 | , free 38 | , transformers 39 | , BookingApi 40 | , test-framework 41 | , test-framework-quickcheck2 42 | , QuickCheck 43 | , quickcheck-instances 44 | ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall 45 | default-language: Haskell2010 46 | 47 | source-repository head 48 | type: git 49 | -------------------------------------------------------------------------------- /Haskell/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /Haskell/app/Main.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Data.Time.Clock 4 | import Control.Monad.Trans.Free (iterM, Free) 5 | import Control.Monad.Trans.Maybe (runMaybeT) 6 | import BookingApi (ReservationsInstruction(..), Reservation(..), tryAccept) 7 | 8 | isReservationInFuture :: Reservation -> IO Bool 9 | isReservationInFuture r = do 10 | now <- getCurrentTime 11 | return $ now < reservationDate r 12 | 13 | -- Hard-coding most of it... 14 | interpret :: Free ReservationsInstruction a -> IO a 15 | interpret = iterM go 16 | where go (IsReservationInFuture r next) = isReservationInFuture r >>= next 17 | go (ReadReservations _ next) = next [] 18 | go (Create _ next) = next 42 19 | 20 | main :: IO () 21 | main = do 22 | now <- getCurrentTime 23 | let tomorrow = nominalDay `addUTCTime` now 24 | let r = Reservation tomorrow "mark@example.com" "Mark Seemann" 4 False 25 | print =<< interpret (runMaybeT $ tryAccept 10 r) 26 | -------------------------------------------------------------------------------- /Haskell/src/BookingApi.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DeriveFunctor #-} 2 | module BookingApi where 3 | 4 | import Data.Time.Clock 5 | import Control.Monad 6 | import Control.Monad.Trans.Class 7 | import Control.Monad.Trans.Maybe 8 | import Control.Monad.Trans.Free 9 | 10 | -- Domain model 11 | 12 | data Reservation = Reservation 13 | { reservationDate :: UTCTime 14 | , reservationEmail :: String 15 | , reservationName :: String 16 | , reservationQuantity :: Int 17 | , reservationIsAccepted :: Bool } 18 | deriving (Show, Eq) 19 | 20 | -- Instruction set 21 | 22 | data ReservationsInstruction next = 23 | IsReservationInFuture Reservation (Bool -> next) 24 | | ReadReservations UTCTime ([Reservation] -> next) 25 | | Create Reservation (Int -> next) 26 | deriving Functor 27 | 28 | -- Program 29 | 30 | type ReservationsProgram = Free ReservationsInstruction 31 | 32 | -- Lifts 33 | 34 | isReservationInFuture :: MonadTrans t => 35 | Reservation -> t ReservationsProgram Bool 36 | isReservationInFuture r = lift $ liftF $ IsReservationInFuture r id 37 | 38 | readReservations :: MonadTrans t => 39 | UTCTime -> t ReservationsProgram [Reservation] 40 | readReservations date = lift $ liftF $ ReadReservations date id 41 | 42 | create :: MonadTrans t => Reservation -> t ReservationsProgram Int 43 | create r = lift $ liftF $ Create r id 44 | 45 | -- Maître'D 46 | 47 | tryAccept :: Int -> Reservation -> MaybeT ReservationsProgram Int 48 | tryAccept capacity reservation = do 49 | guard =<< isReservationInFuture reservation 50 | 51 | reservations <- readReservations $ reservationDate reservation 52 | let reservedSeats = sum $ reservationQuantity <$> reservations 53 | guard $ reservedSeats + reservationQuantity reservation <= capacity 54 | 55 | create $ reservation { reservationIsAccepted = True } 56 | -------------------------------------------------------------------------------- /Haskell/stack.yaml: -------------------------------------------------------------------------------- 1 | # This file was automatically generated by 'stack init' 2 | # 3 | # Some commonly used options have been documented as comments in this file. 4 | # For advanced use and comprehensive documentation of the format, please see: 5 | # https://docs.haskellstack.org/en/stable/yaml_configuration/ 6 | 7 | # Resolver to choose a 'specific' stackage snapshot or a compiler version. 8 | # A snapshot resolver dictates the compiler version and the set of packages 9 | # to be used for project dependencies. For example: 10 | # 11 | # resolver: lts-3.5 12 | # resolver: nightly-2015-09-21 13 | # resolver: ghc-7.10.2 14 | # resolver: ghcjs-0.1.0_ghc-7.10.2 15 | # resolver: 16 | # name: custom-snapshot 17 | # location: "./custom-snapshot.yaml" 18 | resolver: lts-10.4 19 | 20 | # User packages to be built. 21 | # Various formats can be used as shown in the example below. 22 | # 23 | # packages: 24 | # - some-directory 25 | # - https://example.com/foo/bar/baz-0.0.2.tar.gz 26 | # - location: 27 | # git: https://github.com/commercialhaskell/stack.git 28 | # commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a 29 | # - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a 30 | # extra-dep: true 31 | # subdirs: 32 | # - auto-update 33 | # - wai 34 | # 35 | # A package marked 'extra-dep: true' will only be built if demanded by a 36 | # non-dependency (i.e. a user package), and its test suites and benchmarks 37 | # will not be run. This is useful for tweaking upstream packages. 38 | packages: 39 | - . 40 | # Dependency packages to be pulled from upstream that are not in the resolver 41 | # (e.g., acme-missiles-0.3) 42 | extra-deps: 43 | - free-5 44 | 45 | # Override default flag values for local packages and extra-deps 46 | # flags: {} 47 | 48 | # Extra package databases containing global packages 49 | # extra-package-dbs: [] 50 | 51 | # Control whether we use the GHC we find on the path 52 | # system-ghc: true 53 | # 54 | # Require a specific version of stack, using version ranges 55 | # require-stack-version: -any # Default 56 | # require-stack-version: ">=1.6" 57 | # 58 | # Override the architecture used by stack, especially useful on Windows 59 | # arch: i386 60 | # arch: x86_64 61 | # 62 | # Extra directories used by stack for building 63 | # extra-include-dirs: [/path/to/dir] 64 | # extra-lib-dirs: [/path/to/dir] 65 | # 66 | # Allow a newer minor version of GHC than the snapshot specifies 67 | # compiler-check: newer-minor -------------------------------------------------------------------------------- /Haskell/test/Spec.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE ViewPatterns #-} 2 | import Data.Maybe 3 | import Test.Framework (defaultMain, Test) 4 | import Test.Framework.Providers.QuickCheck2 (testProperty) 5 | import Test.QuickCheck 6 | import Test.QuickCheck.Instances () 7 | import Control.Monad.Trans.Free (iter, foldFreeT) 8 | import Control.Monad.Trans.Maybe (runMaybeT) 9 | import Control.Monad.Trans.Writer.Lazy 10 | import BookingApi (ReservationsInstruction(..), Reservation(..), tryAccept) 11 | 12 | newtype ArbReservation = ArbReservation { getReservation :: Reservation } 13 | deriving (Show, Eq) 14 | 15 | instance Arbitrary ArbReservation where 16 | arbitrary = do 17 | (d, e, n, Positive q, b) <- arbitrary 18 | return $ ArbReservation $ Reservation d e n q b 19 | 20 | main :: IO () 21 | main = defaultMain tests 22 | 23 | tests :: [Test] 24 | tests = 25 | [ testProperty "tryAccept reservation in the past" $ \ 26 | (Positive capacity) (ArbReservation reservation) 27 | -> 28 | let stub (IsReservationInFuture _ next) = next False 29 | stub (ReadReservations _ next) = next [] 30 | stub (Create _ next) = next 0 31 | 32 | actual = iter stub $ runMaybeT $ tryAccept capacity reservation 33 | 34 | in isNothing actual 35 | , 36 | testProperty "tryAccept reservation when capacity is insufficient" $ \ 37 | (Positive i) 38 | (fmap getReservation -> reservations) 39 | (ArbReservation reservation) 40 | -> 41 | let stub (IsReservationInFuture _ next) = next True 42 | stub (ReadReservations _ next) = next reservations 43 | stub (Create _ next) = next 0 44 | reservedSeats = sum $ reservationQuantity <$> reservations 45 | capacity = reservedSeats + reservationQuantity reservation - i 46 | 47 | actual = iter stub $ runMaybeT $ tryAccept capacity reservation 48 | 49 | in isNothing actual 50 | , 51 | testProperty "tryAccept, happy path" $ \ 52 | (NonNegative i) 53 | (fmap getReservation -> reservations) 54 | (ArbReservation reservation) 55 | expected 56 | -> 57 | let spy (IsReservationInFuture _ next) = return $ next True 58 | spy (ReadReservations _ next) = return $ next reservations 59 | spy (Create r next) = tell [r] >> return (next expected) 60 | reservedSeats = sum $ reservationQuantity <$> reservations 61 | capacity = reservedSeats + reservationQuantity reservation + i 62 | 63 | (actual, observedReservations) = 64 | runWriter $ foldFreeT spy $ runMaybeT $ tryAccept capacity reservation 65 | 66 | in Just expected == actual && 67 | [True] == (reservationIsAccepted <$> observedReservations) 68 | ] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Mark Seemann 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dependency Injection revisited 2 | 3 | Sample code for the articles: 4 | - [Dependency Injection revisited](http://blog.ploeh.dk/2018/07/24/dependency-injection-revisited) 5 | - [Flattening arrow code using a stack of monads](http://blog.ploeh.dk/2018/07/30/flattening-arrow-code-using-a-stack-of-monads) 6 | - [Terse operators make business code more readable](http://blog.ploeh.dk/2018/07/02/terse-operators-make-business-code-more-readable) 7 | --------------------------------------------------------------------------------