├── assets ├── home.png └── not-found.png ├── .gitignore ├── paket.dependencies ├── package.json ├── App ├── App.fsproj └── App.fs ├── Fable.CloudFlareWorkers ├── Fable.CloudFlareWorkers.fsproj └── CloudFlareWorkers.fs ├── LICENSE ├── README.md ├── paket.lock └── .paket └── Paket.Restore.targets /assets/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zaid-Ajaj/Fable.CloudFlareWorkers/HEAD/assets/home.png -------------------------------------------------------------------------------- /assets/not-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zaid-Ajaj/Fable.CloudFlareWorkers/HEAD/assets/not-found.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | Cargo.lock 4 | bin/ 5 | pkg/ 6 | wasm-pack.log 7 | worker/ 8 | node_modules/ 9 | .cargo-ok 10 | .ionide 11 | bin 12 | obj 13 | dist 14 | .fable 15 | .fake 16 | -------------------------------------------------------------------------------- /paket.dependencies: -------------------------------------------------------------------------------- 1 | group Build 2 | source https://api.nuget.org/v3/index.json 3 | framework: netstandard2.0 4 | storage: none 5 | 6 | nuget FSharp.Core 4.6.0.0 7 | nuget Fake.Core.ReleaseNotes 8 | nuget Fake.Core.Target 9 | nuget Fake.DotNet.Cli 10 | nuget Fake.IO.FileSystem -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "compile": "fable-splitter ./App -o ./dist", 5 | "bundle": "rollup ./dist/App.js -f iife --name App -o ./dist/bundle.js", 6 | "build": "npm run compile && npm run bundle" 7 | }, 8 | "devDependencies": { 9 | "@babel/core": "^7.1.2", 10 | "fable-compiler": "^2.3.23", 11 | "fable-splitter": "^2.1.11", 12 | "rollup": "^1.21.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /App/App.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Fable.CloudFlareWorkers/Fable.CloudFlareWorkers.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | true 6 | Zaid Ajaj 7 | fsharp;fable;cloudflare;serverless;workers 8 | A library for easily writing CloudFlare workers in F# to be used with Fable. 9 | https://github.com/Zaid-Ajaj/Fable.CloudFlareWorkers 10 | https://github.com/Zaid-Ajaj/Fable.CloudFlareWorkers/blob/master/LICENSE 11 | 0.2.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Zaid Ajaj 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /App/App.fs: -------------------------------------------------------------------------------- 1 | module App 2 | 3 | open CloudFlareWorkers 4 | 5 | let worker (request: IHttpRequest) = 6 | async { 7 | match request.method, request.path with 8 | | HttpMethod.GET, "/" -> 9 | return Response.create(body="Home, sweet home", status=200) 10 | 11 | | HttpMethod.POST, "/echo" -> 12 | let! body = request.body() 13 | return Response.create(body=body, status=200) 14 | 15 | | HttpMethod.GET, "/headers" -> 16 | let headers = 17 | request.headers() 18 | |> Map.toList 19 | |> List.map (fun (key, value) -> sprintf "(%s, %s)" key value) 20 | |> String.concat "; " 21 | |> sprintf "[%s]" 22 | 23 | return Response.create(body=headers, status=200) 24 | 25 | | otherwise -> 26 | let body = "{ \"message\": \"Not Found\" }" 27 | let headers = Map.ofList [ "content-type", "application/json" ] 28 | return Response.create(body, status=404, headers=headers) 29 | } 30 | 31 | let echo (context: IRequestContext) = 32 | async { 33 | let request = context.request 34 | return! context.fetch request 35 | } 36 | 37 | Worker.initialize echo -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fable.CloudFlareWorkers 2 | 3 | Write [CloudFlare Workers](https://workers.cloudflare.com/) in idiomatic, type-safe F# and compile them to JS using [Fable](https://github.com/fable-compiler/Fable) 4 | 5 | ### Install the CloudFlare Worker APIs 6 | ``` 7 | dotnet add package Fable.CloudFlareWorkers 8 | ``` 9 | ### Write your worker logic in F# 10 | ```fs 11 | module App 12 | 13 | open CloudFlareWorkers 14 | 15 | let worker (request: IHttpRequest) = 16 | async { 17 | match request.method, request.path with 18 | | HttpMethod.GET, "/" -> 19 | return Response.create(body="Home, sweet home", status=200) 20 | 21 | | HttpMethod.POST, "/echo" -> 22 | let! body = request.body() 23 | return Response.create(body=body, status=200) 24 | 25 | | otherwise -> 26 | let body = "{ \"message\": \"Not Found\" }" 27 | let headers = Map.ofList [ "content-type", "application/json" ] 28 | return Response.create(body, status=404, headers=headers) 29 | } 30 | 31 | Worker.initialize worker 32 | ``` 33 | 34 | A "worker" is a function of type `IHttpRequest -> Async` which is what `Worker.initialize` expects. However, you could also implement simple synchronous workers of type `IHttpRequest -> IHttpResponse` and give them to `Worker.initialize`: 35 | ```fs 36 | let worker (request: IHttpRequest) = 37 | match request.method, request.path with 38 | | HttpMethod.GET, "/" -> 39 | Response.create(body="Home, sweet home", status=200) 40 | 41 | | otherwise -> 42 | let body = "{ \"message\": \"Not Found\" }" 43 | let headers = [ "Content-type", "application/json" ] 44 | Response.create(body, status=404, headers=headers) 45 | 46 | Worker.initialize worker 47 | ``` 48 | 49 | ### Making internal requests from the worker 50 | 51 | CloudFlare workers are able to `fetch` resources using requests and receive responses. In order to send a request with `fetch`, you have to inside a [Request Context](https://developers.cloudflare.com/workers/about/tips/request-context/). Using this library, you can access the request context and thus use `fetch` by using the type `IRequestContext` as your input of the worker where 52 | ```fs 53 | type IRequestContext = 54 | abstract request : IHttpRequest 55 | abstract fetch : IHttpRequest -> Async 56 | ``` 57 | Now build your worker where it expects such context: 58 | ```fs 59 | let echo (context: IRequestContext) = 60 | async { 61 | let request = context.request 62 | let! response = context.fetch request 63 | return response 64 | } 65 | 66 | Worker.initialize echo 67 | ``` 68 | As simple as that! Here, `Worker.initialize` is using another overload that has type `IRequestContext -> Async`. You can also create your own requests using the `Request.create` function. 69 | 70 | ### Compiling the project 71 | 72 | Use a combination of `fable-splitter` to compile the project into ES6 syntax, then use [rollup](https://rollupjs.org/guide/en/) to bundle the application as a single script. First of all, assuming the directory structure is as follows: 73 | ``` 74 | {root} 75 | | 76 | | -- src 77 | | 78 | | -- App.fs 79 | | -- App.fsproj 80 | | 81 | | -- package.json 82 | | -- README.md 83 | | -- package-lock.json 84 | ``` 85 | Install [Fable](https://github.com/fable-compiler/Fable) compiler along with `fable-splitter` and `rollup`: 86 | ``` 87 | npm install fable-compiler fable-splitter rollup @babel/core --save-dev 88 | ``` 89 | Then have one npm script to compile the application, another to bundle it and another that does both: 90 | ```json 91 | { 92 | "compile": "fable-splitter ./src -o ./dist", 93 | "bundle": "rollup ./dist/App.js -f iife --name App -o ./dist/bundle.js", 94 | "build": "npm run compile && npm run bundle" 95 | } 96 | ``` 97 | Notice here that the entry file for `rollup` is `./dist/App.js` that is because `fable-splitter` compiled the entry file `App.fs` as the last file from the F# project which then becomes `App.js`. 98 | 99 | Now `rollup` takes this `App.js` entry file and compiles it into a single file as `./dist/bundle.js` this is where your worker script lives. 100 | 101 | > As for the `--name App` flag of rollup, it is used to give the IIFE a name inside the file and it is required but it can be any name you want. 102 | 103 | ### Testing the worker live 104 | 105 | Copy the contents of the file `./dist/bundle.js`, then go to [https://cloudflareworkers.com](https://cloudflareworkers.com) and paste the code to the left, press `CTRL + S` or click the "Update" button to update the code running where the page will show you "Home, sweet home": 106 | 107 | ![](assets/home.png) 108 | 109 | If you change the path in the url to something like `/other` then you get the "Not Found" message: 110 | 111 | ![](assets/not-found.png) 112 | 113 | ### Resources 114 | 115 | - [Cloudflare Workers Documentation](https://developers.cloudflare.com/workers/) 116 | 117 | - [CloudFlare Workers Tooling](https://developers.cloudflare.com/workers/tooling/) 118 | 119 | - [Joerg Beekmann - Cloudflare Workers in FSharp- Part I](https://github.com/jbeeko/cfworker-hello-world) 120 | 121 | - [Joerg Beekmann - Cloudflare Workers in FSharp - II](https://github.com/jbeeko/cfworker-web-api) 122 | -------------------------------------------------------------------------------- /Fable.CloudFlareWorkers/CloudFlareWorkers.fs: -------------------------------------------------------------------------------- 1 | module CloudFlareWorkers 2 | 3 | open System 4 | open Fable.Core 5 | open Fable.Core.JsInterop 6 | open Browser.Types 7 | 8 | type IHttpRequest = interface end 9 | 10 | type IHttpResponse = interface end 11 | 12 | type IRequestContext = 13 | abstract request : IHttpRequest 14 | abstract fetch : IHttpRequest -> Async 15 | 16 | [] 17 | type HttpMethod = 18 | | [] GET 19 | | [] POST 20 | | [] PUT 21 | | [] DELETE 22 | | [] PATCH 23 | | [] OPTIONS 24 | 25 | /// Interop utilities used in the library 26 | module internal Interop = 27 | [] 28 | let headers (request: obj) : (string * string) [] = jsNative 29 | 30 | [] 31 | let addEventHandler (f: obj -> obj) : unit = jsNative 32 | 33 | [] 34 | let createResponse (body: string, options: obj) = jsNative 35 | 36 | [] 37 | let createRequest (url: string, options: obj) = jsNative 38 | 39 | [] 40 | let hasKey (key: string) (value: obj) = jsNative 41 | 42 | [] 43 | let deleteKey (key: string) (value: obj) = jsNative 44 | 45 | [] 46 | let set (key: string) (value: obj) (object: obj) : unit = jsNative 47 | 48 | [] 49 | let createUInt8Array (x: obj) : byte[] = jsNative 50 | [] 51 | let createBlobFromBytes (bytes: byte[]) : Blob = jsNative 52 | 53 | [] 54 | let fetch (request: IHttpRequest) : JS.Promise = jsNative 55 | 56 | /// Contains functions for working with HTTP requests 57 | module Request = 58 | /// Reads the headers of the incoming request 59 | let headers (request: IHttpRequest) : Map = 60 | Map.ofArray (Interop.headers request) 61 | 62 | /// Reads the body content of the incoming request 63 | let body (request: IHttpRequest) : Async = 64 | async { 65 | let! text = Async.AwaitPromise (request?text()) 66 | return text 67 | } 68 | 69 | [] 70 | /// Returns the path of the incoming request 71 | let path (request: IHttpRequest) : string = jsNative 72 | [] 73 | /// Returns the URL of the incoming request 74 | let url (request: IHttpRequest) : string = jsNative 75 | [] 76 | /// Returns the HTTP method of the request 77 | let method (request: IHttpRequest) : HttpMethod = jsNative 78 | /// Returns the path of the request as segmented list of strings 79 | let pathSegments (request: IHttpRequest) : string list = 80 | let segments = path request 81 | segments.Split('/') 82 | |> List.ofArray 83 | |> List.filter (String.IsNullOrWhiteSpace >> not) 84 | 85 | [] 86 | module Extensions = 87 | type IHttpRequest with 88 | member request.headers() : Map = 89 | Map.ofArray (Interop.headers request) 90 | /// Returns the path of the incoming request 91 | member request.path = Request.path request 92 | /// Returns the URL of the incoming request 93 | member request.url = Request.url request 94 | /// Returns the HTTP method of the request 95 | member request.method = Request.method request 96 | /// Returns the path of the request as segmented list of strings 97 | member request.pathSegments = Request.pathSegments request 98 | /// Reads the body content of the incoming request as text 99 | member request.body() = Request.body request 100 | /// Reads the request body as form data 101 | member request.formData() : Async = 102 | async { 103 | let! formData = Async.AwaitPromise(request?formData()) 104 | return formData 105 | } 106 | /// Reads the body of the request as Blob of raw data 107 | member request.blob() : Async = 108 | async { 109 | let! text = Async.AwaitPromise (request?blob()) 110 | return text 111 | } 112 | /// Reads the body of the request as raw data of bytes (byte array) 113 | member request.rawBody() : Async = 114 | async { 115 | let! arrayBuffer = Async.AwaitPromise(request?arrayBuffer()) 116 | return Interop.createUInt8Array arrayBuffer 117 | } 118 | 119 | type IHttpResponse with 120 | /// Reads the body content of the response as text 121 | member response.body() : Async = 122 | async { 123 | let! text = Async.AwaitPromise (response?text()) 124 | return text 125 | } 126 | 127 | /// Reads the body of the request as Blob of raw data 128 | member response.blob() : Async = 129 | async { 130 | let! text = Async.AwaitPromise (response?blob()) 131 | return text 132 | } 133 | 134 | /// Reads the body of the response as form data 135 | member response.formData() : Async = 136 | async { 137 | let! formData = Async.AwaitPromise(response?formData()) 138 | return formData 139 | } 140 | 141 | /// Reads the headers of the response 142 | member response.headers() : Map = 143 | Map.ofArray (Interop.headers response) 144 | 145 | /// Reads the body of the response as raw data of bytes (byte array) 146 | member response.rawBody() : Async = 147 | async { 148 | let! arrayBuffer = Async.AwaitPromise(response?arrayBuffer()) 149 | return Interop.createUInt8Array arrayBuffer 150 | } 151 | 152 | 153 | [] 154 | type Request = 155 | static member create (url:string, ?body: string, ?headers: Map) : IHttpRequest = 156 | let options = obj() 157 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 158 | body |> Option.iter (fun value -> Interop.set "body" value options) 159 | Interop.createRequest(url, options) 160 | 161 | static member create (url:string, ?body: Blob, ?headers: Map) : IHttpRequest = 162 | let options = obj() 163 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 164 | body |> Option.iter (fun value -> Interop.set "body" value options) 165 | Interop.createRequest(url, options) 166 | 167 | static member create (url:string, ?body: byte[], ?headers: Map) : IHttpRequest = 168 | let options = obj() 169 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 170 | body |> Option.iter (fun value -> Interop.set "body" (Interop.createBlobFromBytes value) options) 171 | Interop.createRequest(url, options) 172 | 173 | static member create (url:string, ?body: FormData, ?headers: Map) : IHttpRequest = 174 | let options = obj() 175 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 176 | body |> Option.iter (fun value -> Interop.set "body" value options) 177 | Interop.createRequest(url, options) 178 | 179 | /// Utilities for working with HTTP responses 180 | [] 181 | type Response = 182 | /// Creates a new response object 183 | static member create (?body:string, ?status:int, ?headers: Map, ?statusText:string) : IHttpResponse = 184 | let options = obj() 185 | status |> Option.iter (fun value -> Interop.set "status" value options) 186 | statusText |> Option.iter (fun value -> Interop.set "statusText" value options) 187 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 188 | Interop.createResponse(!!body, options) 189 | 190 | /// Creates a new response object 191 | static member create (?body:Blob, ?status:int, ?headers: Map, ?statusText:string) : IHttpResponse = 192 | let options = obj() 193 | status |> Option.iter (fun value -> Interop.set "status" value options) 194 | statusText |> Option.iter (fun value -> Interop.set "statusText" value options) 195 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 196 | Interop.createResponse(!!body, options) 197 | 198 | /// Creates a new response object 199 | static member create (?body:byte[], ?status:int, ?headers: Map, ?statusText:string) : IHttpResponse = 200 | let options = obj() 201 | status |> Option.iter (fun value -> Interop.set "status" value options) 202 | statusText |> Option.iter (fun value -> Interop.set "statusText" value options) 203 | headers |> Option.iter (fun value -> Interop.set "headers" (createObj (Array.ofList !!(Map.toList value))) options) 204 | Interop.createResponse(unbox(Interop.createBlobFromBytes !!body), options) 205 | 206 | [] 207 | type Worker = 208 | static member initialize (handler: IHttpRequest -> IHttpResponse) : unit = 209 | Interop.addEventHandler (fun fetchEvent -> fetchEvent?respondWith(handler fetchEvent?request)) 210 | 211 | static member initialize (handler: IHttpRequest -> Async) : unit = 212 | Interop.addEventHandler (fun fetchEvent -> fetchEvent?respondWith(Async.StartAsPromise(handler fetchEvent?request))) 213 | 214 | static member initialize (handler: IRequestContext -> Async) : unit = 215 | Interop.addEventHandler <| fun fetchEvent -> 216 | let requestContext = 217 | { new IRequestContext with 218 | member x.request = fetchEvent?request 219 | member x.fetch(request: IHttpRequest) = 220 | async { 221 | let! response = Async.AwaitPromise(Interop.fetch request) 222 | return response 223 | } 224 | } 225 | 226 | fetchEvent?respondWith(Async.StartAsPromise(handler requestContext)) -------------------------------------------------------------------------------- /paket.lock: -------------------------------------------------------------------------------- 1 | 2 | 3 | GROUP Build 4 | STORAGE: NONE 5 | RESTRICTION: == netstandard2.0 6 | NUGET 7 | remote: https://api.nuget.org/v3/index.json 8 | BlackFox.VsWhere (1.0) 9 | FSharp.Core (>= 4.2.3) 10 | Fake.Core.CommandLineParsing (5.15.4) 11 | FParsec (>= 1.0.3) 12 | FSharp.Core (>= 4.3.4) 13 | Fake.Core.Context (5.15.4) 14 | FSharp.Core (>= 4.3.4) 15 | Fake.Core.Environment (5.15.4) 16 | FSharp.Core (>= 4.3.4) 17 | Fake.Core.FakeVar (5.15.4) 18 | Fake.Core.Context (>= 5.15.4) 19 | FSharp.Core (>= 4.3.4) 20 | Fake.Core.Process (5.15.4) 21 | Fake.Core.Environment (>= 5.15.4) 22 | Fake.Core.FakeVar (>= 5.15.4) 23 | Fake.Core.String (>= 5.15.4) 24 | Fake.Core.Trace (>= 5.15.4) 25 | Fake.IO.FileSystem (>= 5.15.4) 26 | FSharp.Core (>= 4.3.4) 27 | System.Diagnostics.Process (>= 4.3) 28 | Fake.Core.ReleaseNotes (5.15.4) 29 | Fake.Core.SemVer (>= 5.15.4) 30 | Fake.Core.String (>= 5.15.4) 31 | FSharp.Core (>= 4.3.4) 32 | Fake.Core.SemVer (5.15.4) 33 | FSharp.Core (>= 4.3.4) 34 | System.Runtime.Numerics (>= 4.3) 35 | Fake.Core.String (5.15.4) 36 | FSharp.Core (>= 4.3.4) 37 | Fake.Core.Target (5.15.4) 38 | Fake.Core.CommandLineParsing (>= 5.15.4) 39 | Fake.Core.Context (>= 5.15.4) 40 | Fake.Core.Environment (>= 5.15.4) 41 | Fake.Core.FakeVar (>= 5.15.4) 42 | Fake.Core.Process (>= 5.15.4) 43 | Fake.Core.String (>= 5.15.4) 44 | Fake.Core.Trace (>= 5.15.4) 45 | FSharp.Control.Reactive (>= 4.2) 46 | FSharp.Core (>= 4.3.4) 47 | System.Reactive.Compatibility (>= 4.1.5) 48 | Fake.Core.Tasks (5.15.4) 49 | Fake.Core.Trace (>= 5.15.4) 50 | FSharp.Core (>= 4.3.4) 51 | Fake.Core.Trace (5.15.4) 52 | Fake.Core.Environment (>= 5.15.4) 53 | Fake.Core.FakeVar (>= 5.15.4) 54 | FSharp.Core (>= 4.3.4) 55 | Fake.Core.Xml (5.15.4) 56 | Fake.Core.String (>= 5.15.4) 57 | FSharp.Core (>= 4.3.4) 58 | System.Xml.ReaderWriter (>= 4.3.1) 59 | System.Xml.XDocument (>= 4.3) 60 | System.Xml.XPath (>= 4.3) 61 | System.Xml.XPath.XDocument (>= 4.3) 62 | System.Xml.XPath.XmlDocument (>= 4.3) 63 | Fake.DotNet.Cli (5.15.4) 64 | Fake.Core.Environment (>= 5.15.4) 65 | Fake.Core.Process (>= 5.15.4) 66 | Fake.Core.String (>= 5.15.4) 67 | Fake.Core.Trace (>= 5.15.4) 68 | Fake.DotNet.MSBuild (>= 5.15.4) 69 | Fake.DotNet.NuGet (>= 5.15.4) 70 | Fake.IO.FileSystem (>= 5.15.4) 71 | FSharp.Core (>= 4.3.4) 72 | Newtonsoft.Json (>= 12.0.2) 73 | Fake.DotNet.MSBuild (5.15.4) 74 | BlackFox.VsWhere (>= 1.0) 75 | Fake.Core.Environment (>= 5.15.4) 76 | Fake.Core.Process (>= 5.15.4) 77 | Fake.Core.String (>= 5.15.4) 78 | Fake.Core.Trace (>= 5.15.4) 79 | Fake.IO.FileSystem (>= 5.15.4) 80 | FSharp.Core (>= 4.3.4) 81 | MSBuild.StructuredLogger (>= 2.0.94) 82 | Fake.DotNet.NuGet (5.15.4) 83 | Fake.Core.Environment (>= 5.15.4) 84 | Fake.Core.Process (>= 5.15.4) 85 | Fake.Core.SemVer (>= 5.15.4) 86 | Fake.Core.String (>= 5.15.4) 87 | Fake.Core.Tasks (>= 5.15.4) 88 | Fake.Core.Trace (>= 5.15.4) 89 | Fake.Core.Xml (>= 5.15.4) 90 | Fake.IO.FileSystem (>= 5.15.4) 91 | Fake.Net.Http (>= 5.15.4) 92 | FSharp.Core (>= 4.3.4) 93 | Newtonsoft.Json (>= 12.0.2) 94 | NuGet.Protocol (>= 4.9.4) 95 | System.Net.Http (>= 4.3.4) 96 | Fake.IO.FileSystem (5.15.4) 97 | Fake.Core.String (>= 5.15.4) 98 | FSharp.Core (>= 4.3.4) 99 | System.Diagnostics.FileVersionInfo (>= 4.3) 100 | System.IO.FileSystem.Watcher (>= 4.3) 101 | Fake.Net.Http (5.15.4) 102 | Fake.Core.Trace (>= 5.15.4) 103 | FSharp.Core (>= 4.3.4) 104 | System.Net.Http (>= 4.3.4) 105 | FParsec (1.0.3) 106 | FSharp.Core (>= 4.2.3) 107 | NETStandard.Library (>= 1.6.1) 108 | FSharp.Control.Reactive (4.2) 109 | FSharp.Core (>= 4.2.3) 110 | System.Reactive (>= 4.0) 111 | FSharp.Core (4.6) 112 | Microsoft.Build (16.0.461) 113 | Microsoft.Build.Framework (16.0.461) 114 | System.Runtime.Serialization.Primitives (>= 4.1.1) 115 | System.Threading.Thread (>= 4.0) 116 | Microsoft.Build.Tasks.Core (16.0.461) 117 | Microsoft.Build.Framework (>= 16.0.461) 118 | Microsoft.Build.Utilities.Core (>= 16.0.461) 119 | Microsoft.Win32.Registry (>= 4.3) 120 | System.CodeDom (>= 4.4) 121 | System.Collections.Immutable (>= 1.5) 122 | System.Linq.Parallel (>= 4.0.1) 123 | System.Net.Http (>= 4.3) 124 | System.Reflection.Metadata (>= 1.6) 125 | System.Reflection.TypeExtensions (>= 4.1) 126 | System.Resources.Writer (>= 4.0) 127 | System.Threading.Tasks.Dataflow (>= 4.6) 128 | Microsoft.Build.Utilities.Core (16.0.461) 129 | Microsoft.Build.Framework (>= 16.0.461) 130 | Microsoft.Win32.Registry (>= 4.3) 131 | System.Collections.Immutable (>= 1.5) 132 | System.Text.Encoding.CodePages (>= 4.0.1) 133 | Microsoft.NETCore.Platforms (2.2.3) 134 | Microsoft.NETCore.Targets (2.1) 135 | Microsoft.Win32.Primitives (4.3) 136 | Microsoft.NETCore.Platforms (>= 1.1) 137 | Microsoft.NETCore.Targets (>= 1.1) 138 | System.Runtime (>= 4.3) 139 | Microsoft.Win32.Registry (4.5) 140 | System.Buffers (>= 4.4) 141 | System.Memory (>= 4.5) 142 | System.Security.AccessControl (>= 4.5) 143 | System.Security.Principal.Windows (>= 4.5) 144 | MSBuild.StructuredLogger (2.0.110) 145 | Microsoft.Build (>= 15.8.166) 146 | Microsoft.Build.Framework (>= 15.8.166) 147 | Microsoft.Build.Tasks.Core (>= 15.8.166) 148 | Microsoft.Build.Utilities.Core (>= 15.8.166) 149 | NETStandard.Library (2.0.3) 150 | Microsoft.NETCore.Platforms (>= 1.1) 151 | Newtonsoft.Json (12.0.2) 152 | NuGet.Common (5.2) 153 | NuGet.Frameworks (>= 5.2) 154 | System.Diagnostics.Process (>= 4.3) 155 | System.Threading.Thread (>= 4.3) 156 | NuGet.Configuration (5.2) 157 | NuGet.Common (>= 5.2) 158 | System.Security.Cryptography.ProtectedData (>= 4.3) 159 | NuGet.Frameworks (5.2) 160 | NuGet.Packaging (5.2) 161 | Newtonsoft.Json (>= 9.0.1) 162 | NuGet.Configuration (>= 5.2) 163 | NuGet.Versioning (>= 5.2) 164 | System.Dynamic.Runtime (>= 4.3) 165 | NuGet.Protocol (5.2) 166 | NuGet.Packaging (>= 5.2) 167 | System.Dynamic.Runtime (>= 4.3) 168 | NuGet.Versioning (5.2) 169 | runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 170 | runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 171 | runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 172 | runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 173 | runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 174 | runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 175 | runtime.native.System (4.3.1) 176 | Microsoft.NETCore.Platforms (>= 1.1.1) 177 | Microsoft.NETCore.Targets (>= 1.1.3) 178 | runtime.native.System.Net.Http (4.3.1) 179 | Microsoft.NETCore.Platforms (>= 1.1.1) 180 | Microsoft.NETCore.Targets (>= 1.1.3) 181 | runtime.native.System.Security.Cryptography.Apple (4.3.1) 182 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) 183 | runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 184 | runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 185 | runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 186 | runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 187 | runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 188 | runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 189 | runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 190 | runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 191 | runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 192 | runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 193 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 194 | runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 195 | runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 196 | runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 197 | runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 198 | runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) 199 | runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 200 | runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 201 | runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 202 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) 203 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 204 | runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 205 | runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 206 | runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 207 | runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 208 | runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) 209 | System.Buffers (4.5) 210 | System.CodeDom (4.5) 211 | System.Collections (4.3) 212 | Microsoft.NETCore.Platforms (>= 1.1) 213 | Microsoft.NETCore.Targets (>= 1.1) 214 | System.Runtime (>= 4.3) 215 | System.Collections.Concurrent (4.3) 216 | System.Collections (>= 4.3) 217 | System.Diagnostics.Debug (>= 4.3) 218 | System.Diagnostics.Tracing (>= 4.3) 219 | System.Globalization (>= 4.3) 220 | System.Reflection (>= 4.3) 221 | System.Resources.ResourceManager (>= 4.3) 222 | System.Runtime (>= 4.3) 223 | System.Runtime.Extensions (>= 4.3) 224 | System.Threading (>= 4.3) 225 | System.Threading.Tasks (>= 4.3) 226 | System.Collections.Immutable (1.5) 227 | System.Diagnostics.Debug (4.3) 228 | Microsoft.NETCore.Platforms (>= 1.1) 229 | Microsoft.NETCore.Targets (>= 1.1) 230 | System.Runtime (>= 4.3) 231 | System.Diagnostics.DiagnosticSource (4.5.1) 232 | System.Diagnostics.FileVersionInfo (4.3) 233 | Microsoft.NETCore.Platforms (>= 1.1) 234 | System.Globalization (>= 4.3) 235 | System.IO (>= 4.3) 236 | System.IO.FileSystem (>= 4.3) 237 | System.IO.FileSystem.Primitives (>= 4.3) 238 | System.Reflection.Metadata (>= 1.4.1) 239 | System.Runtime (>= 4.3) 240 | System.Runtime.Extensions (>= 4.3) 241 | System.Runtime.InteropServices (>= 4.3) 242 | System.Diagnostics.Process (4.3) 243 | Microsoft.NETCore.Platforms (>= 1.1) 244 | Microsoft.Win32.Primitives (>= 4.3) 245 | Microsoft.Win32.Registry (>= 4.3) 246 | runtime.native.System (>= 4.3) 247 | System.Collections (>= 4.3) 248 | System.Diagnostics.Debug (>= 4.3) 249 | System.Globalization (>= 4.3) 250 | System.IO (>= 4.3) 251 | System.IO.FileSystem (>= 4.3) 252 | System.IO.FileSystem.Primitives (>= 4.3) 253 | System.Resources.ResourceManager (>= 4.3) 254 | System.Runtime (>= 4.3) 255 | System.Runtime.Extensions (>= 4.3) 256 | System.Runtime.Handles (>= 4.3) 257 | System.Runtime.InteropServices (>= 4.3) 258 | System.Text.Encoding (>= 4.3) 259 | System.Text.Encoding.Extensions (>= 4.3) 260 | System.Threading (>= 4.3) 261 | System.Threading.Tasks (>= 4.3) 262 | System.Threading.Thread (>= 4.3) 263 | System.Threading.ThreadPool (>= 4.3) 264 | System.Diagnostics.Tools (4.3) 265 | Microsoft.NETCore.Platforms (>= 1.1) 266 | Microsoft.NETCore.Targets (>= 1.1) 267 | System.Runtime (>= 4.3) 268 | System.Diagnostics.Tracing (4.3) 269 | Microsoft.NETCore.Platforms (>= 1.1) 270 | Microsoft.NETCore.Targets (>= 1.1) 271 | System.Runtime (>= 4.3) 272 | System.Dynamic.Runtime (4.3) 273 | System.Collections (>= 4.3) 274 | System.Diagnostics.Debug (>= 4.3) 275 | System.Linq (>= 4.3) 276 | System.Linq.Expressions (>= 4.3) 277 | System.ObjectModel (>= 4.3) 278 | System.Reflection (>= 4.3) 279 | System.Reflection.Emit (>= 4.3) 280 | System.Reflection.Emit.ILGeneration (>= 4.3) 281 | System.Reflection.Primitives (>= 4.3) 282 | System.Reflection.TypeExtensions (>= 4.3) 283 | System.Resources.ResourceManager (>= 4.3) 284 | System.Runtime (>= 4.3) 285 | System.Runtime.Extensions (>= 4.3) 286 | System.Threading (>= 4.3) 287 | System.Globalization (4.3) 288 | Microsoft.NETCore.Platforms (>= 1.1) 289 | Microsoft.NETCore.Targets (>= 1.1) 290 | System.Runtime (>= 4.3) 291 | System.Globalization.Calendars (4.3) 292 | Microsoft.NETCore.Platforms (>= 1.1) 293 | Microsoft.NETCore.Targets (>= 1.1) 294 | System.Globalization (>= 4.3) 295 | System.Runtime (>= 4.3) 296 | System.Globalization.Extensions (4.3) 297 | Microsoft.NETCore.Platforms (>= 1.1) 298 | System.Globalization (>= 4.3) 299 | System.Resources.ResourceManager (>= 4.3) 300 | System.Runtime (>= 4.3) 301 | System.Runtime.Extensions (>= 4.3) 302 | System.Runtime.InteropServices (>= 4.3) 303 | System.IO (4.3) 304 | Microsoft.NETCore.Platforms (>= 1.1) 305 | Microsoft.NETCore.Targets (>= 1.1) 306 | System.Runtime (>= 4.3) 307 | System.Text.Encoding (>= 4.3) 308 | System.Threading.Tasks (>= 4.3) 309 | System.IO.FileSystem (4.3) 310 | Microsoft.NETCore.Platforms (>= 1.1) 311 | Microsoft.NETCore.Targets (>= 1.1) 312 | System.IO (>= 4.3) 313 | System.IO.FileSystem.Primitives (>= 4.3) 314 | System.Runtime (>= 4.3) 315 | System.Runtime.Handles (>= 4.3) 316 | System.Text.Encoding (>= 4.3) 317 | System.Threading.Tasks (>= 4.3) 318 | System.IO.FileSystem.Primitives (4.3) 319 | System.Runtime (>= 4.3) 320 | System.IO.FileSystem.Watcher (4.3) 321 | Microsoft.NETCore.Platforms (>= 1.1) 322 | Microsoft.Win32.Primitives (>= 4.3) 323 | runtime.native.System (>= 4.3) 324 | System.Collections (>= 4.3) 325 | System.IO.FileSystem (>= 4.3) 326 | System.IO.FileSystem.Primitives (>= 4.3) 327 | System.Resources.ResourceManager (>= 4.3) 328 | System.Runtime (>= 4.3) 329 | System.Runtime.Extensions (>= 4.3) 330 | System.Runtime.Handles (>= 4.3) 331 | System.Runtime.InteropServices (>= 4.3) 332 | System.Text.Encoding (>= 4.3) 333 | System.Threading (>= 4.3) 334 | System.Threading.Overlapped (>= 4.3) 335 | System.Threading.Tasks (>= 4.3) 336 | System.Threading.Thread (>= 4.3) 337 | System.Linq (4.3) 338 | System.Collections (>= 4.3) 339 | System.Diagnostics.Debug (>= 4.3) 340 | System.Resources.ResourceManager (>= 4.3) 341 | System.Runtime (>= 4.3) 342 | System.Runtime.Extensions (>= 4.3) 343 | System.Linq.Expressions (4.3) 344 | System.Collections (>= 4.3) 345 | System.Diagnostics.Debug (>= 4.3) 346 | System.Globalization (>= 4.3) 347 | System.IO (>= 4.3) 348 | System.Linq (>= 4.3) 349 | System.ObjectModel (>= 4.3) 350 | System.Reflection (>= 4.3) 351 | System.Reflection.Emit (>= 4.3) 352 | System.Reflection.Emit.ILGeneration (>= 4.3) 353 | System.Reflection.Emit.Lightweight (>= 4.3) 354 | System.Reflection.Extensions (>= 4.3) 355 | System.Reflection.Primitives (>= 4.3) 356 | System.Reflection.TypeExtensions (>= 4.3) 357 | System.Resources.ResourceManager (>= 4.3) 358 | System.Runtime (>= 4.3) 359 | System.Runtime.Extensions (>= 4.3) 360 | System.Threading (>= 4.3) 361 | System.Linq.Parallel (4.3) 362 | System.Collections (>= 4.3) 363 | System.Collections.Concurrent (>= 4.3) 364 | System.Diagnostics.Debug (>= 4.3) 365 | System.Diagnostics.Tracing (>= 4.3) 366 | System.Linq (>= 4.3) 367 | System.Resources.ResourceManager (>= 4.3) 368 | System.Runtime (>= 4.3) 369 | System.Runtime.Extensions (>= 4.3) 370 | System.Threading (>= 4.3) 371 | System.Threading.Tasks (>= 4.3) 372 | System.Memory (4.5.3) 373 | System.Buffers (>= 4.4) 374 | System.Numerics.Vectors (>= 4.4) 375 | System.Runtime.CompilerServices.Unsafe (>= 4.5.2) 376 | System.Net.Http (4.3.4) 377 | Microsoft.NETCore.Platforms (>= 1.1.1) 378 | runtime.native.System (>= 4.3) 379 | runtime.native.System.Net.Http (>= 4.3) 380 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) 381 | System.Collections (>= 4.3) 382 | System.Diagnostics.Debug (>= 4.3) 383 | System.Diagnostics.DiagnosticSource (>= 4.3) 384 | System.Diagnostics.Tracing (>= 4.3) 385 | System.Globalization (>= 4.3) 386 | System.Globalization.Extensions (>= 4.3) 387 | System.IO (>= 4.3) 388 | System.IO.FileSystem (>= 4.3) 389 | System.Net.Primitives (>= 4.3) 390 | System.Resources.ResourceManager (>= 4.3) 391 | System.Runtime (>= 4.3) 392 | System.Runtime.Extensions (>= 4.3) 393 | System.Runtime.Handles (>= 4.3) 394 | System.Runtime.InteropServices (>= 4.3) 395 | System.Security.Cryptography.Algorithms (>= 4.3) 396 | System.Security.Cryptography.Encoding (>= 4.3) 397 | System.Security.Cryptography.OpenSsl (>= 4.3) 398 | System.Security.Cryptography.Primitives (>= 4.3) 399 | System.Security.Cryptography.X509Certificates (>= 4.3) 400 | System.Text.Encoding (>= 4.3) 401 | System.Threading (>= 4.3) 402 | System.Threading.Tasks (>= 4.3) 403 | System.Net.Primitives (4.3.1) 404 | Microsoft.NETCore.Platforms (>= 1.1.1) 405 | Microsoft.NETCore.Targets (>= 1.1.3) 406 | System.Runtime (>= 4.3.1) 407 | System.Runtime.Handles (>= 4.3) 408 | System.Numerics.Vectors (4.5) 409 | System.ObjectModel (4.3) 410 | System.Collections (>= 4.3) 411 | System.Diagnostics.Debug (>= 4.3) 412 | System.Resources.ResourceManager (>= 4.3) 413 | System.Runtime (>= 4.3) 414 | System.Threading (>= 4.3) 415 | System.Reactive (4.1.6) 416 | System.Runtime.InteropServices.WindowsRuntime (>= 4.3) 417 | System.Threading.Tasks.Extensions (>= 4.5.2) 418 | System.Reactive.Compatibility (4.1.6) 419 | System.Reactive.Core (>= 4.1.6) 420 | System.Reactive.Interfaces (>= 4.1.6) 421 | System.Reactive.Linq (>= 4.1.6) 422 | System.Reactive.PlatformServices (>= 4.1.6) 423 | System.Reactive.Providers (>= 4.1.6) 424 | System.Reactive.Core (4.1.6) 425 | System.Reactive (>= 4.1.6) 426 | System.Threading.Tasks.Extensions (>= 4.5.2) 427 | System.Reactive.Interfaces (4.1.6) 428 | System.Reactive (>= 4.1.6) 429 | System.Threading.Tasks.Extensions (>= 4.5.2) 430 | System.Reactive.Linq (4.1.6) 431 | System.Reactive (>= 4.1.6) 432 | System.Threading.Tasks.Extensions (>= 4.5.2) 433 | System.Reactive.PlatformServices (4.1.6) 434 | System.Reactive (>= 4.1.6) 435 | System.Threading.Tasks.Extensions (>= 4.5.2) 436 | System.Reactive.Providers (4.1.6) 437 | System.Reactive (>= 4.1.6) 438 | System.Threading.Tasks.Extensions (>= 4.5.2) 439 | System.Reflection (4.3) 440 | Microsoft.NETCore.Platforms (>= 1.1) 441 | Microsoft.NETCore.Targets (>= 1.1) 442 | System.IO (>= 4.3) 443 | System.Reflection.Primitives (>= 4.3) 444 | System.Runtime (>= 4.3) 445 | System.Reflection.Emit (4.3) 446 | System.IO (>= 4.3) 447 | System.Reflection (>= 4.3) 448 | System.Reflection.Emit.ILGeneration (>= 4.3) 449 | System.Reflection.Primitives (>= 4.3) 450 | System.Runtime (>= 4.3) 451 | System.Reflection.Emit.ILGeneration (4.3) 452 | System.Reflection (>= 4.3) 453 | System.Reflection.Primitives (>= 4.3) 454 | System.Runtime (>= 4.3) 455 | System.Reflection.Emit.Lightweight (4.3) 456 | System.Reflection (>= 4.3) 457 | System.Reflection.Emit.ILGeneration (>= 4.3) 458 | System.Reflection.Primitives (>= 4.3) 459 | System.Runtime (>= 4.3) 460 | System.Reflection.Extensions (4.3) 461 | Microsoft.NETCore.Platforms (>= 1.1) 462 | Microsoft.NETCore.Targets (>= 1.1) 463 | System.Reflection (>= 4.3) 464 | System.Runtime (>= 4.3) 465 | System.Reflection.Metadata (1.6) 466 | System.Collections.Immutable (>= 1.5) 467 | System.Reflection.Primitives (4.3) 468 | Microsoft.NETCore.Platforms (>= 1.1) 469 | Microsoft.NETCore.Targets (>= 1.1) 470 | System.Runtime (>= 4.3) 471 | System.Reflection.TypeExtensions (4.5.1) 472 | System.Resources.ResourceManager (4.3) 473 | Microsoft.NETCore.Platforms (>= 1.1) 474 | Microsoft.NETCore.Targets (>= 1.1) 475 | System.Globalization (>= 4.3) 476 | System.Reflection (>= 4.3) 477 | System.Runtime (>= 4.3) 478 | System.Resources.Writer (4.3) 479 | System.Collections (>= 4.3) 480 | System.IO (>= 4.3) 481 | System.Resources.ResourceManager (>= 4.3) 482 | System.Runtime (>= 4.3) 483 | System.Runtime.Extensions (>= 4.3) 484 | System.Text.Encoding (>= 4.3) 485 | System.Runtime (4.3.1) 486 | Microsoft.NETCore.Platforms (>= 1.1.1) 487 | Microsoft.NETCore.Targets (>= 1.1.3) 488 | System.Runtime.CompilerServices.Unsafe (4.5.2) 489 | System.Runtime.Extensions (4.3.1) 490 | Microsoft.NETCore.Platforms (>= 1.1.1) 491 | Microsoft.NETCore.Targets (>= 1.1.3) 492 | System.Runtime (>= 4.3.1) 493 | System.Runtime.Handles (4.3) 494 | Microsoft.NETCore.Platforms (>= 1.1) 495 | Microsoft.NETCore.Targets (>= 1.1) 496 | System.Runtime (>= 4.3) 497 | System.Runtime.InteropServices (4.3) 498 | Microsoft.NETCore.Platforms (>= 1.1) 499 | Microsoft.NETCore.Targets (>= 1.1) 500 | System.Reflection (>= 4.3) 501 | System.Reflection.Primitives (>= 4.3) 502 | System.Runtime (>= 4.3) 503 | System.Runtime.Handles (>= 4.3) 504 | System.Runtime.InteropServices.WindowsRuntime (4.3) 505 | System.Runtime (>= 4.3) 506 | System.Runtime.Numerics (4.3) 507 | System.Globalization (>= 4.3) 508 | System.Resources.ResourceManager (>= 4.3) 509 | System.Runtime (>= 4.3) 510 | System.Runtime.Extensions (>= 4.3) 511 | System.Runtime.Serialization.Primitives (4.3) 512 | System.Resources.ResourceManager (>= 4.3) 513 | System.Runtime (>= 4.3) 514 | System.Security.AccessControl (4.5) 515 | System.Security.Principal.Windows (>= 4.5) 516 | System.Security.Cryptography.Algorithms (4.3.1) 517 | Microsoft.NETCore.Platforms (>= 1.1) 518 | runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) 519 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) 520 | System.Collections (>= 4.3) 521 | System.IO (>= 4.3) 522 | System.Resources.ResourceManager (>= 4.3) 523 | System.Runtime (>= 4.3) 524 | System.Runtime.Extensions (>= 4.3) 525 | System.Runtime.Handles (>= 4.3) 526 | System.Runtime.InteropServices (>= 4.3) 527 | System.Runtime.Numerics (>= 4.3) 528 | System.Security.Cryptography.Encoding (>= 4.3) 529 | System.Security.Cryptography.Primitives (>= 4.3) 530 | System.Text.Encoding (>= 4.3) 531 | System.Security.Cryptography.Cng (4.5) 532 | System.Security.Cryptography.Csp (4.3) 533 | Microsoft.NETCore.Platforms (>= 1.1) 534 | System.IO (>= 4.3) 535 | System.Reflection (>= 4.3) 536 | System.Resources.ResourceManager (>= 4.3) 537 | System.Runtime (>= 4.3) 538 | System.Runtime.Extensions (>= 4.3) 539 | System.Runtime.Handles (>= 4.3) 540 | System.Runtime.InteropServices (>= 4.3) 541 | System.Security.Cryptography.Algorithms (>= 4.3) 542 | System.Security.Cryptography.Encoding (>= 4.3) 543 | System.Security.Cryptography.Primitives (>= 4.3) 544 | System.Text.Encoding (>= 4.3) 545 | System.Threading (>= 4.3) 546 | System.Security.Cryptography.Encoding (4.3) 547 | Microsoft.NETCore.Platforms (>= 1.1) 548 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 549 | System.Collections (>= 4.3) 550 | System.Collections.Concurrent (>= 4.3) 551 | System.Linq (>= 4.3) 552 | System.Resources.ResourceManager (>= 4.3) 553 | System.Runtime (>= 4.3) 554 | System.Runtime.Extensions (>= 4.3) 555 | System.Runtime.Handles (>= 4.3) 556 | System.Runtime.InteropServices (>= 4.3) 557 | System.Security.Cryptography.Primitives (>= 4.3) 558 | System.Text.Encoding (>= 4.3) 559 | System.Security.Cryptography.OpenSsl (4.5.1) 560 | System.Security.Cryptography.Primitives (4.3) 561 | System.Diagnostics.Debug (>= 4.3) 562 | System.Globalization (>= 4.3) 563 | System.IO (>= 4.3) 564 | System.Resources.ResourceManager (>= 4.3) 565 | System.Runtime (>= 4.3) 566 | System.Threading (>= 4.3) 567 | System.Threading.Tasks (>= 4.3) 568 | System.Security.Cryptography.ProtectedData (4.5) 569 | System.Memory (>= 4.5) 570 | System.Security.Cryptography.X509Certificates (4.3.2) 571 | Microsoft.NETCore.Platforms (>= 1.1) 572 | runtime.native.System (>= 4.3) 573 | runtime.native.System.Net.Http (>= 4.3) 574 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) 575 | System.Collections (>= 4.3) 576 | System.Diagnostics.Debug (>= 4.3) 577 | System.Globalization (>= 4.3) 578 | System.Globalization.Calendars (>= 4.3) 579 | System.IO (>= 4.3) 580 | System.IO.FileSystem (>= 4.3) 581 | System.IO.FileSystem.Primitives (>= 4.3) 582 | System.Resources.ResourceManager (>= 4.3) 583 | System.Runtime (>= 4.3) 584 | System.Runtime.Extensions (>= 4.3) 585 | System.Runtime.Handles (>= 4.3) 586 | System.Runtime.InteropServices (>= 4.3) 587 | System.Runtime.Numerics (>= 4.3) 588 | System.Security.Cryptography.Algorithms (>= 4.3) 589 | System.Security.Cryptography.Cng (>= 4.3) 590 | System.Security.Cryptography.Csp (>= 4.3) 591 | System.Security.Cryptography.Encoding (>= 4.3) 592 | System.Security.Cryptography.OpenSsl (>= 4.3) 593 | System.Security.Cryptography.Primitives (>= 4.3) 594 | System.Text.Encoding (>= 4.3) 595 | System.Threading (>= 4.3) 596 | System.Security.Principal.Windows (4.5.1) 597 | System.Text.Encoding (4.3) 598 | Microsoft.NETCore.Platforms (>= 1.1) 599 | Microsoft.NETCore.Targets (>= 1.1) 600 | System.Runtime (>= 4.3) 601 | System.Text.Encoding.CodePages (4.5.1) 602 | System.Runtime.CompilerServices.Unsafe (>= 4.5.2) 603 | System.Text.Encoding.Extensions (4.3) 604 | Microsoft.NETCore.Platforms (>= 1.1) 605 | Microsoft.NETCore.Targets (>= 1.1) 606 | System.Runtime (>= 4.3) 607 | System.Text.Encoding (>= 4.3) 608 | System.Text.RegularExpressions (4.3.1) 609 | System.Collections (>= 4.3) 610 | System.Globalization (>= 4.3) 611 | System.Resources.ResourceManager (>= 4.3) 612 | System.Runtime (>= 4.3.1) 613 | System.Runtime.Extensions (>= 4.3.1) 614 | System.Threading (>= 4.3) 615 | System.Threading (4.3) 616 | System.Runtime (>= 4.3) 617 | System.Threading.Tasks (>= 4.3) 618 | System.Threading.Overlapped (4.3) 619 | Microsoft.NETCore.Platforms (>= 1.1) 620 | System.Resources.ResourceManager (>= 4.3) 621 | System.Runtime (>= 4.3) 622 | System.Runtime.Handles (>= 4.3) 623 | System.Threading.Tasks (4.3) 624 | Microsoft.NETCore.Platforms (>= 1.1) 625 | Microsoft.NETCore.Targets (>= 1.1) 626 | System.Runtime (>= 4.3) 627 | System.Threading.Tasks.Dataflow (4.9) 628 | System.Threading.Tasks.Extensions (4.5.3) 629 | System.Runtime.CompilerServices.Unsafe (>= 4.5.2) 630 | System.Threading.Thread (4.3) 631 | System.Runtime (>= 4.3) 632 | System.Threading.ThreadPool (4.3) 633 | System.Runtime (>= 4.3) 634 | System.Runtime.Handles (>= 4.3) 635 | System.Xml.ReaderWriter (4.3.1) 636 | System.Collections (>= 4.3) 637 | System.Diagnostics.Debug (>= 4.3) 638 | System.Globalization (>= 4.3) 639 | System.IO (>= 4.3) 640 | System.IO.FileSystem (>= 4.3) 641 | System.IO.FileSystem.Primitives (>= 4.3) 642 | System.Resources.ResourceManager (>= 4.3) 643 | System.Runtime (>= 4.3) 644 | System.Runtime.Extensions (>= 4.3) 645 | System.Runtime.InteropServices (>= 4.3) 646 | System.Text.Encoding (>= 4.3) 647 | System.Text.Encoding.Extensions (>= 4.3) 648 | System.Text.RegularExpressions (>= 4.3) 649 | System.Threading.Tasks (>= 4.3) 650 | System.Threading.Tasks.Extensions (>= 4.3) 651 | System.Xml.XDocument (4.3) 652 | System.Collections (>= 4.3) 653 | System.Diagnostics.Debug (>= 4.3) 654 | System.Diagnostics.Tools (>= 4.3) 655 | System.Globalization (>= 4.3) 656 | System.IO (>= 4.3) 657 | System.Reflection (>= 4.3) 658 | System.Resources.ResourceManager (>= 4.3) 659 | System.Runtime (>= 4.3) 660 | System.Runtime.Extensions (>= 4.3) 661 | System.Text.Encoding (>= 4.3) 662 | System.Threading (>= 4.3) 663 | System.Xml.ReaderWriter (>= 4.3) 664 | System.Xml.XmlDocument (4.3) 665 | System.Collections (>= 4.3) 666 | System.Diagnostics.Debug (>= 4.3) 667 | System.Globalization (>= 4.3) 668 | System.IO (>= 4.3) 669 | System.Resources.ResourceManager (>= 4.3) 670 | System.Runtime (>= 4.3) 671 | System.Runtime.Extensions (>= 4.3) 672 | System.Text.Encoding (>= 4.3) 673 | System.Threading (>= 4.3) 674 | System.Xml.ReaderWriter (>= 4.3) 675 | System.Xml.XPath (4.3) 676 | System.Collections (>= 4.3) 677 | System.Diagnostics.Debug (>= 4.3) 678 | System.Globalization (>= 4.3) 679 | System.IO (>= 4.3) 680 | System.Resources.ResourceManager (>= 4.3) 681 | System.Runtime (>= 4.3) 682 | System.Runtime.Extensions (>= 4.3) 683 | System.Threading (>= 4.3) 684 | System.Xml.ReaderWriter (>= 4.3) 685 | System.Xml.XPath.XDocument (4.3) 686 | System.Diagnostics.Debug (>= 4.3) 687 | System.Linq (>= 4.3) 688 | System.Resources.ResourceManager (>= 4.3) 689 | System.Runtime (>= 4.3) 690 | System.Runtime.Extensions (>= 4.3) 691 | System.Threading (>= 4.3) 692 | System.Xml.ReaderWriter (>= 4.3) 693 | System.Xml.XDocument (>= 4.3) 694 | System.Xml.XPath (>= 4.3) 695 | System.Xml.XPath.XmlDocument (4.3) 696 | System.Collections (>= 4.3) 697 | System.Globalization (>= 4.3) 698 | System.IO (>= 4.3) 699 | System.Resources.ResourceManager (>= 4.3) 700 | System.Runtime (>= 4.3) 701 | System.Runtime.Extensions (>= 4.3) 702 | System.Threading (>= 4.3) 703 | System.Xml.ReaderWriter (>= 4.3) 704 | System.Xml.XmlDocument (>= 4.3) 705 | System.Xml.XPath (>= 4.3) 706 | -------------------------------------------------------------------------------- /.paket/Paket.Restore.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 8 | 9 | $(MSBuildVersion) 10 | 15.0.0 11 | false 12 | true 13 | 14 | true 15 | $(MSBuildThisFileDirectory) 16 | $(MSBuildThisFileDirectory)..\ 17 | $(PaketRootPath)paket-files\paket.restore.cached 18 | $(PaketRootPath)paket.lock 19 | classic 20 | proj 21 | assembly 22 | native 23 | /Library/Frameworks/Mono.framework/Commands/mono 24 | mono 25 | 26 | 27 | $(PaketRootPath)paket.bootstrapper.exe 28 | $(PaketToolsPath)paket.bootstrapper.exe 29 | $([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\ 30 | 31 | 32 | 33 | 34 | $(PaketRootPath)paket.exe 35 | $(PaketToolsPath)paket.exe 36 | $(PaketToolsPath)paket.exe 37 | $(_PaketBootStrapperExeDir)paket.exe 38 | paket.exe 39 | 40 | 41 | $(PaketRootPath)paket 42 | $(PaketToolsPath)paket 43 | $(PaketToolsPath)paket 44 | 45 | 46 | $(PaketRootPath)paket.exe 47 | $(PaketToolsPath)paket.exe 48 | 49 | 50 | $(PaketBootStrapperExeDir)paket.exe 51 | 52 | 53 | paket 54 | 55 | 56 | <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) 57 | dotnet "$(PaketExePath)" 58 | $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" 59 | "$(PaketExePath)" 60 | 61 | 62 | "$(PaketBootStrapperExePath)" 63 | $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" 64 | 65 | 66 | 67 | 68 | true 69 | true 70 | 71 | 72 | True 73 | 74 | $(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/')) 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | true 89 | $(NoWarn);NU1603;NU1604;NU1605;NU1608 90 | false 91 | true 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) 101 | 102 | 103 | 104 | 105 | 106 | 108 | $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``)) 109 | $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``)) 110 | 111 | 112 | 113 | 114 | %(PaketRestoreCachedKeyValue.Value) 115 | %(PaketRestoreCachedKeyValue.Value) 116 | 117 | 118 | 119 | 120 | true 121 | false 122 | true 123 | 124 | 125 | 129 | 130 | true 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | $(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached 150 | 151 | $(MSBuildProjectFullPath).paket.references 152 | 153 | $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references 154 | 155 | $(MSBuildProjectDirectory)\paket.references 156 | 157 | false 158 | true 159 | true 160 | references-file-or-cache-not-found 161 | 162 | 163 | 164 | 165 | $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) 166 | $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) 167 | references-file 168 | false 169 | 170 | 171 | 172 | 173 | false 174 | 175 | 176 | 177 | 178 | true 179 | target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths) 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | false 191 | true 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) 203 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) 204 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) 205 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) 206 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) 207 | 208 | 209 | %(PaketReferencesFileLinesInfo.PackageVersion) 210 | All 211 | runtime 212 | runtime 213 | true 214 | true 215 | 216 | 217 | 218 | 219 | $(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) 229 | $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) 230 | 231 | 232 | %(PaketCliToolFileLinesInfo.PackageVersion) 233 | 234 | 235 | 236 | 240 | 241 | 242 | 243 | 244 | 245 | false 246 | 247 | 248 | 249 | 250 | 251 | <_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/> 252 | 253 | 254 | 255 | 256 | 257 | $(MSBuildProjectDirectory)/$(MSBuildProjectFile) 258 | true 259 | false 260 | true 261 | false 262 | true 263 | false 264 | true 265 | false 266 | true 267 | $(PaketIntermediateOutputPath)\$(Configuration) 268 | $(PaketIntermediateOutputPath) 269 | 270 | 271 | 272 | <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/> 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 330 | 331 | 374 | 375 | 417 | 418 | 459 | 460 | 461 | 462 | --------------------------------------------------------------------------------