├── .config └── dotnet-tools.json ├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── .vscodeignore ├── LICENSE.md ├── Nuget.Config ├── README.md ├── RELEASE_NOTES.md ├── build.cmd ├── build.fsx ├── build.sh ├── global.json ├── jsconfig.json ├── package.json ├── paket.dependencies ├── paket.lock ├── release ├── CHANGELOG.md ├── LICENSE.md ├── README.md └── package.json ├── src ├── Extension.fsproj ├── extension.fs └── paket.references ├── webpack.config.js └── yarn.lock /.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "paket": { 6 | "version": "5.257.0", 7 | "commands": [ 8 | "paket" 9 | ] 10 | }, 11 | "fake-cli": { 12 | "version": "5.20.3", 13 | "commands": [ 14 | "fake" 15 | ] 16 | }, 17 | "fable": { 18 | "version": "3.1.5", 19 | "commands": [ 20 | "fable" 21 | ] 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | *.suo 30 | Test/obj/ 31 | Test/bin/ 32 | .paket/paket.exe 33 | paket-files 34 | packages 35 | typings/FunScript.TypeScript/Output 36 | typings/FunScript.TypeScript/Types.zip 37 | typings/FunScript.TypeScript/*.txt 38 | 39 | .DS_Store 40 | src/**/bin/ 41 | src/**/obj/ 42 | *.userprefs 43 | src/paket/bin/paket.exe 44 | src/core/lib/core.js 45 | src/paket/lib/paket.js 46 | *ncrunch* 47 | src/core/README.md 48 | src/atom-fsharp/lib/ 49 | src/fsharp/lib/fsharp.js 50 | src/atom-fsharp/lib/fsharp.js 51 | /temp/release 52 | src/atom-fsharp/bin-fantomas/ 53 | release/syntaxes 54 | release/templates 55 | release/schemas 56 | release_test/bin 57 | 58 | temp 59 | .fake 60 | .ionide 61 | .paket 62 | .vs 63 | *.js 64 | !webpack.config.js 65 | *.js.map 66 | .orig 67 | release.cmd 68 | release-preview.cmd 69 | paket-files 70 | issueList.md 71 | release/package-lock\.json 72 | *.vsix -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "preLaunchTask": "Build", 7 | "name": "Build and Launch Extension", 8 | "type": "extensionHost", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}/release" ], 11 | "stopOnEntry": false, 12 | "request": "launch", 13 | "sourceMaps": false 14 | }, 15 | { 16 | "name": "Launch Only", 17 | "type": "extensionHost", 18 | "runtimeExecutable": "${execPath}", 19 | "args": ["--extensionDevelopmentPath=${workspaceRoot}/release" ], 20 | "stopOnEntry": false, 21 | "request": "launch", 22 | "sourceMaps": false 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "presentation": { 4 | "reveal": "silent" 5 | }, 6 | "type": "shell", 7 | "tasks": [ 8 | { 9 | "command": "${workspaceRoot}/build.sh", 10 | "windows": { 11 | "command": "${workspaceRoot}/build.cmd" 12 | }, 13 | "taskName": "Build", 14 | "args": [ 15 | "Default" 16 | ], 17 | "group": { 18 | "kind": "build", 19 | "isDefault": true 20 | } 21 | }, 22 | { 23 | "command": "${workspaceRoot}/build.sh", 24 | "windows": { 25 | "command": "${workspaceRoot}/build.cmd" 26 | }, 27 | "taskName": "Full Build", 28 | "args": [ 29 | "Build" 30 | ], 31 | "group": "build" 32 | }, 33 | { 34 | "command": "${workspaceRoot}/build.sh", 35 | "windows": { 36 | "command": "${workspaceRoot}/build.cmd" 37 | }, 38 | "taskName": "Watch", 39 | "args": [ 40 | "Watch" 41 | ], 42 | "group": "build", 43 | "isBackground": true, 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | typings/** 3 | test/** 4 | .gitignore 5 | jsconfig.json 6 | vsc-extension-quickstart.md 7 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Lambda Factory 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Nuget.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | The sample for building VSCode extensions using F# and Fable. 2 | 3 | ### Requirements 4 | * VSCode 5 | * Node.js 6 | * `dotnet` 5.0 7 | * Yarn 8 | 9 | ### How to build 10 | 11 | 1. `yarn install` 12 | 2. `cd src && dotnet restore` 13 | 3. `cd .. && code .` 14 | 4. Press `F5` for single build, or run `Watch` task and `Launch Only` debug configuration for watch mode compilation. -------------------------------------------------------------------------------- /RELEASE_NOTES.md: -------------------------------------------------------------------------------- 1 | ### 0.0.1 - 15.09.2017 2 | 3 | * Getting started -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | dotnet tool restore 3 | dotnet paket restore 4 | dotnet fake run build.fsx %* 5 | -------------------------------------------------------------------------------- /build.fsx: -------------------------------------------------------------------------------- 1 | #r "paket: groupref build //" 2 | #load ".fake/build.fsx/intellisense.fsx" 3 | 4 | open Fake.Core 5 | open Fake.JavaScript 6 | open Fake.DotNet 7 | open Fake.IO 8 | open Fake.Core.TargetOperators 9 | 10 | // -------------------------------------------------------------------------------------- 11 | // Build the Generator project and run it 12 | // -------------------------------------------------------------------------------------- 13 | 14 | Target.create "Clean" (fun _ -> 15 | Shell.cleanDirs ["./temp"] 16 | Shell.copy "release" ["README.md"; "LICENSE.md"] 17 | Shell.copyFile "release/CHANGELOG.md" "RELEASE_NOTES.md" 18 | ) 19 | 20 | Target.create "YarnInstall" <| fun _ -> 21 | Yarn.install id 22 | 23 | Target.create "DotNetRestore" <| fun _ -> 24 | DotNet.restore id "src" 25 | 26 | module Fable = 27 | type Command = 28 | | Build 29 | | Watch 30 | | Clean 31 | type Webpack = 32 | | WithoutWebpack 33 | | WithWebpack of args: string option 34 | type Args = { 35 | Command: Command 36 | Debug: bool 37 | Experimental: bool 38 | ProjectPath: string 39 | OutDir: string option 40 | Defines: string list 41 | AdditionalFableArgs: string option 42 | Webpack: Webpack 43 | } 44 | 45 | let DefaultArgs = { 46 | Command = Build 47 | Debug = false 48 | Experimental = false 49 | ProjectPath = "./src/Extension.fsproj" 50 | OutDir = Some "./out" 51 | Defines = [] 52 | AdditionalFableArgs = None 53 | Webpack = WithoutWebpack 54 | } 55 | 56 | let private mkArgs args = 57 | let fableCmd = 58 | match args.Command with 59 | | Build -> "" 60 | | Watch -> "watch" 61 | | Clean -> "clean" 62 | let fableProjPath = args.ProjectPath 63 | let fableDebug = if args.Debug then "--define DEBUG" else "" 64 | let fableExperimental = if args.Experimental then "--define IONIDE_EXPERIMENTAL" else "" 65 | let fableOutDir = 66 | match args.OutDir with 67 | | Some dir -> sprintf "--outDir %s" dir 68 | | None -> "" 69 | let fableDefines = args.Defines |> List.map (sprintf "--define %s") |> String.concat " " 70 | let fableAdditionalArgs = args.AdditionalFableArgs |> Option.defaultValue "" 71 | let webpackCmd = 72 | match args.Webpack with 73 | | WithoutWebpack -> "" 74 | | WithWebpack webpackArgs -> 75 | sprintf "--%s webpack %s %s %s" 76 | (match args.Command with | Watch -> "runWatch" | _ -> "run") 77 | (if args.Debug then "--mode=development" else "--mode=production") 78 | (if args.Experimental then "--env.ionideExperimental" else "") 79 | (webpackArgs |> Option.defaultValue "") 80 | 81 | // $"{fableCmd} {fableProjPath} {fableOutDir} {fableDebug} {fableExperimental} {fableDefines} {fableAdditionalArgs} {webpackCmd}" 82 | sprintf "%s %s %s %s %s %s %s %s" fableCmd fableProjPath fableOutDir fableDebug fableExperimental fableDefines fableAdditionalArgs webpackCmd 83 | 84 | let run args = 85 | let cmd = mkArgs args 86 | let result = DotNet.exec id "fable" cmd 87 | if not result.OK then 88 | failwithf "Error while running 'dotnet fable' with args: %s" cmd 89 | 90 | Target.create "RunScript" (fun _ -> 91 | Fable.run { Fable.DefaultArgs with Command = Fable.Build; Debug = false; Webpack = Fable.WithWebpack None } 92 | ) 93 | 94 | Target.create "Watch" (fun _ -> 95 | Fable.run { Fable.DefaultArgs with Command = Fable.Watch; Debug = true; Webpack = Fable.WithWebpack None } 96 | ) 97 | 98 | 99 | // -------------------------------------------------------------------------------------- 100 | // Run generator by default. Invoke 'build ' to override 101 | // -------------------------------------------------------------------------------------- 102 | 103 | Target.create "Default" ignore 104 | 105 | "YarnInstall" ?=> "RunScript" 106 | "DotNetRestore" ?=> "RunScript" 107 | 108 | "Clean" 109 | ==> "RunScript" 110 | ==> "Default" 111 | 112 | Target.runOrDefault "Default" 113 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if test "$OS" = "Windows_NT" 3 | then 4 | cmd /C build.cmd 5 | else 6 | dotnet tool restore 7 | dotnet paket restore 8 | dotnet fake run build.fsx $@ 9 | fi 10 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "5.0.102", 4 | "rollForward": "minor" 5 | } 6 | } -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ES5", 5 | "noLib": true 6 | }, 7 | "exclude": [ 8 | "node_modules" 9 | ] 10 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": {}, 3 | "dependencies": { 4 | "htmlparser2": "^4.1.0" 5 | }, 6 | "devDependencies": { 7 | "@babel/core": "^7.11.6", 8 | "@babel/plugin-transform-runtime": "^7.11.5", 9 | "@babel/preset-env": "^7.11.5", 10 | "@types/showdown": "^1.9.3", 11 | "@types/vscode": "^1.52.0", 12 | "@types/ws": "^7.2.6", 13 | "axios": "^0.21.2", 14 | "babel-loader": "^8.1.0", 15 | "mocha": "^8.1.3", 16 | "showdown": "^1.9.1", 17 | "toml": "^3.0.0", 18 | "vscode-debugadapter": "^1.44.0", 19 | "vscode-languageclient": "^7.0.0", 20 | "webpack": "^4.44.1", 21 | "webpack-cli": "^3.3.12", 22 | "ws": "^7.4.6", 23 | "xhr2": "^0.2.0" 24 | } 25 | } -------------------------------------------------------------------------------- /paket.dependencies: -------------------------------------------------------------------------------- 1 | version 5.249.0 2 | source https://api.nuget.org/v3/index.json 3 | frameworks: netstandard2.0 4 | storage:none 5 | 6 | nuget Fable.Core 7 | nuget Fable.Promise 8 | nuget Fable.Node 9 | nuget Fable.Browser.Dom 10 | nuget FSharp.Core 11 | 12 | github ionide/ionide-vscode-helpers src/Fable.Import.VSCode.fs 13 | github ionide/ionide-vscode-helpers src/Helpers.fs 14 | 15 | group build 16 | source https://api.nuget.org/v3/index.json 17 | storage:none 18 | framework:netstandard2.0 19 | 20 | nuget FSharp.Core 4.7.2 21 | nuget Fake.Core.Target 22 | nuget Fake.Core.Process 23 | nuget Fake.Core.ReleaseNotes 24 | nuget Fake.Core.Environment 25 | nuget Fake.Core.UserInput 26 | nuget Fake.DotNet.Cli 27 | nuget Fake.DotNet.AssemblyInfoFile 28 | nuget Fake.DotNet.Paket 29 | nuget Fake.DotNet.MsBuild 30 | nuget Fake.IO.FileSystem 31 | nuget Fake.IO.Zip 32 | nuget Fake.Api.GitHub 33 | nuget Fake.Tools.Git 34 | nuget Fake.JavaScript.Yarn -------------------------------------------------------------------------------- /paket.lock: -------------------------------------------------------------------------------- 1 | STORAGE: NONE 2 | RESTRICTION: == netstandard2.0 3 | NUGET 4 | remote: https://api.nuget.org/v3/index.json 5 | Fable.Browser.Blob (1.1) 6 | Fable.Core (>= 3.0) 7 | FSharp.Core (>= 4.6.2) 8 | Fable.Browser.Dom (2.2) 9 | Fable.Browser.Blob (>= 1.1) 10 | Fable.Browser.Event (>= 1.2.1) 11 | Fable.Browser.WebStorage (>= 1.0) 12 | Fable.Core (>= 3.0) 13 | FSharp.Core (>= 4.7.2) 14 | Fable.Browser.Event (1.2.1) 15 | Fable.Core (>= 3.0) 16 | FSharp.Core (>= 4.7) 17 | Fable.Browser.WebStorage (1.0) 18 | Fable.Browser.Event (>= 1.0) 19 | Fable.Core (>= 3.0) 20 | FSharp.Core (>= 4.5.2) 21 | Fable.Core (3.2.4) 22 | FSharp.Core (>= 4.7.2) 23 | Fable.Node (1.2) 24 | Fable.Core (>= 3.1.2) 25 | FSharp.Core (>= 5.0) 26 | Fable.Promise (2.2) 27 | Fable.Core (>= 3.1.5) 28 | FSharp.Core (>= 5.0) 29 | FSharp.Core (5.0.1) 30 | GITHUB 31 | remote: ionide/ionide-vscode-helpers 32 | src/Fable.Import.VSCode.fs (f9cfaa474910164482c2f5ae4a2fc1e54aa4ec72) 33 | src/Helpers.fs (f9cfaa474910164482c2f5ae4a2fc1e54aa4ec72) 34 | GROUP build 35 | STORAGE: NONE 36 | RESTRICTION: == netstandard2.0 37 | NUGET 38 | remote: https://api.nuget.org/v3/index.json 39 | BlackFox.VsWhere (1.1) 40 | FSharp.Core (>= 4.2.3) 41 | Microsoft.Win32.Registry (>= 4.7) 42 | Fake.Api.GitHub (5.20.3) 43 | FSharp.Core (>= 4.7.2) 44 | Octokit (>= 0.48) 45 | Fake.Core.CommandLineParsing (5.20.3) 46 | FParsec (>= 1.1.1) 47 | FSharp.Core (>= 4.7.2) 48 | Fake.Core.Context (5.20.3) 49 | FSharp.Core (>= 4.7.2) 50 | Fake.Core.Environment (5.20.3) 51 | FSharp.Core (>= 4.7.2) 52 | Fake.Core.FakeVar (5.20.3) 53 | Fake.Core.Context (>= 5.20.3) 54 | FSharp.Core (>= 4.7.2) 55 | Fake.Core.Process (5.20.3) 56 | Fake.Core.Environment (>= 5.20.3) 57 | Fake.Core.FakeVar (>= 5.20.3) 58 | Fake.Core.String (>= 5.20.3) 59 | Fake.Core.Trace (>= 5.20.3) 60 | Fake.IO.FileSystem (>= 5.20.3) 61 | FSharp.Core (>= 4.7.2) 62 | System.Collections.Immutable (>= 1.7.1) 63 | Fake.Core.ReleaseNotes (5.20.3) 64 | Fake.Core.SemVer (>= 5.20.3) 65 | Fake.Core.String (>= 5.20.3) 66 | FSharp.Core (>= 4.7.2) 67 | Fake.Core.SemVer (5.20.3) 68 | FSharp.Core (>= 4.7.2) 69 | Fake.Core.String (5.20.3) 70 | FSharp.Core (>= 4.7.2) 71 | Fake.Core.Target (5.20.3) 72 | Fake.Core.CommandLineParsing (>= 5.20.3) 73 | Fake.Core.Context (>= 5.20.3) 74 | Fake.Core.Environment (>= 5.20.3) 75 | Fake.Core.FakeVar (>= 5.20.3) 76 | Fake.Core.Process (>= 5.20.3) 77 | Fake.Core.String (>= 5.20.3) 78 | Fake.Core.Trace (>= 5.20.3) 79 | FSharp.Control.Reactive (>= 4.4.2) 80 | FSharp.Core (>= 4.7.2) 81 | Fake.Core.Tasks (5.20.3) 82 | Fake.Core.Trace (>= 5.20.3) 83 | FSharp.Core (>= 4.7.2) 84 | Fake.Core.Trace (5.20.3) 85 | Fake.Core.Environment (>= 5.20.3) 86 | Fake.Core.FakeVar (>= 5.20.3) 87 | FSharp.Core (>= 4.7.2) 88 | Fake.Core.UserInput (5.20.3) 89 | FSharp.Core (>= 4.7.2) 90 | Fake.Core.Xml (5.20.3) 91 | Fake.Core.String (>= 5.20.3) 92 | FSharp.Core (>= 4.7.2) 93 | Fake.DotNet.AssemblyInfoFile (5.20.3) 94 | Fake.Core.Environment (>= 5.20.3) 95 | Fake.Core.String (>= 5.20.3) 96 | Fake.Core.Trace (>= 5.20.3) 97 | Fake.IO.FileSystem (>= 5.20.3) 98 | FSharp.Core (>= 4.7.2) 99 | Fake.DotNet.Cli (5.20.3) 100 | Fake.Core.Environment (>= 5.20.3) 101 | Fake.Core.Process (>= 5.20.3) 102 | Fake.Core.String (>= 5.20.3) 103 | Fake.Core.Trace (>= 5.20.3) 104 | Fake.DotNet.MSBuild (>= 5.20.3) 105 | Fake.DotNet.NuGet (>= 5.20.3) 106 | Fake.IO.FileSystem (>= 5.20.3) 107 | FSharp.Core (>= 4.7.2) 108 | Mono.Posix.NETStandard (>= 1.0) 109 | Newtonsoft.Json (>= 12.0.3) 110 | Fake.DotNet.MSBuild (5.20.3) 111 | BlackFox.VsWhere (>= 1.1) 112 | Fake.Core.Environment (>= 5.20.3) 113 | Fake.Core.Process (>= 5.20.3) 114 | Fake.Core.String (>= 5.20.3) 115 | Fake.Core.Trace (>= 5.20.3) 116 | Fake.IO.FileSystem (>= 5.20.3) 117 | FSharp.Core (>= 4.7.2) 118 | MSBuild.StructuredLogger (>= 2.1.176) 119 | Fake.DotNet.NuGet (5.20.3) 120 | Fake.Core.Environment (>= 5.20.3) 121 | Fake.Core.Process (>= 5.20.3) 122 | Fake.Core.SemVer (>= 5.20.3) 123 | Fake.Core.String (>= 5.20.3) 124 | Fake.Core.Tasks (>= 5.20.3) 125 | Fake.Core.Trace (>= 5.20.3) 126 | Fake.Core.Xml (>= 5.20.3) 127 | Fake.IO.FileSystem (>= 5.20.3) 128 | Fake.Net.Http (>= 5.20.3) 129 | FSharp.Core (>= 4.7.2) 130 | Newtonsoft.Json (>= 12.0.3) 131 | NuGet.Protocol (>= 5.6) 132 | Fake.DotNet.Paket (5.20.3) 133 | Fake.Core.Process (>= 5.20.3) 134 | Fake.Core.String (>= 5.20.3) 135 | Fake.Core.Trace (>= 5.20.3) 136 | Fake.DotNet.Cli (>= 5.20.3) 137 | Fake.IO.FileSystem (>= 5.20.3) 138 | FSharp.Core (>= 4.7.2) 139 | Fake.IO.FileSystem (5.20.3) 140 | Fake.Core.String (>= 5.20.3) 141 | FSharp.Core (>= 4.7.2) 142 | Fake.IO.Zip (5.20.3) 143 | Fake.Core.String (>= 5.20.3) 144 | Fake.IO.FileSystem (>= 5.20.3) 145 | FSharp.Core (>= 4.7.2) 146 | Fake.JavaScript.Yarn (5.20.3) 147 | Fake.Core.Environment (>= 5.20.3) 148 | Fake.Core.Process (>= 5.20.3) 149 | FSharp.Core (>= 4.7.2) 150 | Fake.Net.Http (5.20.3) 151 | Fake.Core.Trace (>= 5.20.3) 152 | FSharp.Core (>= 4.7.2) 153 | Fake.Tools.Git (5.20.3) 154 | Fake.Core.Environment (>= 5.20.3) 155 | Fake.Core.Process (>= 5.20.3) 156 | Fake.Core.SemVer (>= 5.20.3) 157 | Fake.Core.String (>= 5.20.3) 158 | Fake.Core.Trace (>= 5.20.3) 159 | Fake.IO.FileSystem (>= 5.20.3) 160 | FSharp.Core (>= 4.7.2) 161 | FParsec (1.1.1) 162 | FSharp.Core (>= 4.3.4) 163 | FSharp.Control.Reactive (4.5) 164 | FSharp.Core (>= 4.7.2) 165 | System.Reactive (>= 4.4.1) 166 | FSharp.Core (4.7.2) 167 | Microsoft.Build (16.8) 168 | Microsoft.Build.Framework (16.8) 169 | System.Security.Permissions (>= 4.7) 170 | Microsoft.Build.Tasks.Core (16.8) 171 | Microsoft.Build.Framework (>= 16.8) 172 | Microsoft.Build.Utilities.Core (>= 16.8) 173 | Microsoft.Win32.Registry (>= 4.3) 174 | System.CodeDom (>= 4.4) 175 | System.Collections.Immutable (>= 1.5) 176 | System.Reflection.Metadata (>= 1.6) 177 | System.Reflection.TypeExtensions (>= 4.1) 178 | System.Resources.Extensions (>= 4.6) 179 | System.Runtime.InteropServices (>= 4.3) 180 | System.Security.Cryptography.Pkcs (>= 4.7) 181 | System.Security.Cryptography.Xml (>= 4.7) 182 | System.Security.Permissions (>= 4.7) 183 | System.Threading.Tasks.Dataflow (>= 4.9) 184 | Microsoft.Build.Utilities.Core (16.8) 185 | Microsoft.Build.Framework (>= 16.8) 186 | Microsoft.Win32.Registry (>= 4.3) 187 | System.Collections.Immutable (>= 1.5) 188 | System.Security.Permissions (>= 4.7) 189 | System.Text.Encoding.CodePages (>= 4.0.1) 190 | Microsoft.NETCore.Platforms (5.0.1) 191 | Microsoft.NETCore.Targets (5.0) 192 | Microsoft.Win32.Registry (5.0) 193 | System.Buffers (>= 4.5.1) 194 | System.Memory (>= 4.5.4) 195 | System.Security.AccessControl (>= 5.0) 196 | System.Security.Principal.Windows (>= 5.0) 197 | Mono.Posix.NETStandard (1.0) 198 | MSBuild.StructuredLogger (2.1.303) 199 | Microsoft.Build (>= 16.4) 200 | Microsoft.Build.Framework (>= 16.4) 201 | Microsoft.Build.Tasks.Core (>= 16.4) 202 | Microsoft.Build.Utilities.Core (>= 16.4) 203 | Newtonsoft.Json (12.0.3) 204 | NuGet.Common (5.8.1) 205 | NuGet.Frameworks (>= 5.8.1) 206 | NuGet.Configuration (5.8.1) 207 | NuGet.Common (>= 5.8.1) 208 | System.Security.Cryptography.ProtectedData (>= 4.4) 209 | NuGet.Frameworks (5.8.1) 210 | NuGet.Packaging (5.8.1) 211 | Newtonsoft.Json (>= 9.0.1) 212 | NuGet.Configuration (>= 5.8.1) 213 | NuGet.Versioning (>= 5.8.1) 214 | System.Security.Cryptography.Cng (>= 5.0) 215 | System.Security.Cryptography.Pkcs (>= 5.0) 216 | NuGet.Protocol (5.8.1) 217 | NuGet.Packaging (>= 5.8.1) 218 | NuGet.Versioning (5.8.1) 219 | Octokit (0.50) 220 | System.Buffers (4.5.1) 221 | System.CodeDom (5.0) 222 | System.Collections.Immutable (5.0) 223 | System.Memory (>= 4.5.4) 224 | System.Formats.Asn1 (5.0) 225 | System.Buffers (>= 4.5.1) 226 | System.Memory (>= 4.5.4) 227 | System.IO (4.3) 228 | Microsoft.NETCore.Platforms (>= 1.1) 229 | Microsoft.NETCore.Targets (>= 1.1) 230 | System.Runtime (>= 4.3) 231 | System.Text.Encoding (>= 4.3) 232 | System.Threading.Tasks (>= 4.3) 233 | System.Memory (4.5.4) 234 | System.Buffers (>= 4.5.1) 235 | System.Numerics.Vectors (>= 4.4) 236 | System.Runtime.CompilerServices.Unsafe (>= 4.5.3) 237 | System.Numerics.Vectors (4.5) 238 | System.Reactive (5.0) 239 | System.Runtime.InteropServices.WindowsRuntime (>= 4.3) 240 | System.Threading.Tasks.Extensions (>= 4.5.4) 241 | System.Reflection (4.3) 242 | Microsoft.NETCore.Platforms (>= 1.1) 243 | Microsoft.NETCore.Targets (>= 1.1) 244 | System.IO (>= 4.3) 245 | System.Reflection.Primitives (>= 4.3) 246 | System.Runtime (>= 4.3) 247 | System.Reflection.Metadata (5.0) 248 | System.Collections.Immutable (>= 5.0) 249 | System.Reflection.Primitives (4.3) 250 | Microsoft.NETCore.Platforms (>= 1.1) 251 | Microsoft.NETCore.Targets (>= 1.1) 252 | System.Runtime (>= 4.3) 253 | System.Reflection.TypeExtensions (4.7) 254 | System.Resources.Extensions (5.0) 255 | System.Memory (>= 4.5.4) 256 | System.Runtime (4.3.1) 257 | Microsoft.NETCore.Platforms (>= 1.1.1) 258 | Microsoft.NETCore.Targets (>= 1.1.3) 259 | System.Runtime.CompilerServices.Unsafe (5.0) 260 | System.Runtime.Handles (4.3) 261 | Microsoft.NETCore.Platforms (>= 1.1) 262 | Microsoft.NETCore.Targets (>= 1.1) 263 | System.Runtime (>= 4.3) 264 | System.Runtime.InteropServices (4.3) 265 | Microsoft.NETCore.Platforms (>= 1.1) 266 | Microsoft.NETCore.Targets (>= 1.1) 267 | System.Reflection (>= 4.3) 268 | System.Reflection.Primitives (>= 4.3) 269 | System.Runtime (>= 4.3) 270 | System.Runtime.Handles (>= 4.3) 271 | System.Runtime.InteropServices.WindowsRuntime (4.3) 272 | System.Runtime (>= 4.3) 273 | System.Security.AccessControl (5.0) 274 | System.Security.Principal.Windows (>= 5.0) 275 | System.Security.Cryptography.Cng (5.0) 276 | System.Security.Cryptography.Pkcs (5.0.1) 277 | System.Buffers (>= 4.5.1) 278 | System.Formats.Asn1 (>= 5.0) 279 | System.Memory (>= 4.5.4) 280 | System.Security.Cryptography.Cng (>= 5.0) 281 | System.Security.Cryptography.ProtectedData (5.0) 282 | System.Memory (>= 4.5.4) 283 | System.Security.Cryptography.Xml (5.0) 284 | System.Memory (>= 4.5.4) 285 | System.Security.Cryptography.Pkcs (>= 5.0) 286 | System.Security.Permissions (>= 5.0) 287 | System.Security.Permissions (5.0) 288 | System.Security.AccessControl (>= 5.0) 289 | System.Security.Principal.Windows (5.0) 290 | System.Text.Encoding (4.3) 291 | Microsoft.NETCore.Platforms (>= 1.1) 292 | Microsoft.NETCore.Targets (>= 1.1) 293 | System.Runtime (>= 4.3) 294 | System.Text.Encoding.CodePages (5.0) 295 | System.Runtime.CompilerServices.Unsafe (>= 5.0) 296 | System.Threading.Tasks (4.3) 297 | Microsoft.NETCore.Platforms (>= 1.1) 298 | Microsoft.NETCore.Targets (>= 1.1) 299 | System.Runtime (>= 4.3) 300 | System.Threading.Tasks.Dataflow (5.0) 301 | System.Threading.Tasks.Extensions (4.5.4) 302 | System.Runtime.CompilerServices.Unsafe (>= 4.5.3) 303 | -------------------------------------------------------------------------------- /release/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.0.1 - 15.09.2017 2 | 3 | * Getting started -------------------------------------------------------------------------------- /release/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Lambda Factory 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /release/README.md: -------------------------------------------------------------------------------- 1 | # README 2 | ## This is the README for your extension "fabledemo" 3 | You can author your README using Visual Studio Code. Here are some useful editor keyboard shortcuts: 4 | 5 | * Split the editor (`Cmd+\` on OSX or `Ctrl+\` on Windows and Linux) 6 | * Toggle preview (`Shift+CMD+V` on OSX or `Shift+Ctrl+V` on Windows and Linux) 7 | * Press `Ctrl+Space` (Windows, Linux) or `Cmd+Space` (OSX) to see a list of Markdown snippets 8 | 9 | ### For more information 10 | * [Visual Studio Code's Markdown Support](http://code.visualstudio.com/docs/languages/markdown) 11 | * [Markdown Syntax Reference](https://help.github.com/articles/markdown-basics/) 12 | 13 | ** Enjoy!** -------------------------------------------------------------------------------- /release/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fabledemo", 3 | "publisher": "fabledemo", 4 | "version": "0.0.1", 5 | "engines": { 6 | "vscode": "^0.10.10" 7 | }, 8 | "categories": [ 9 | "Other" 10 | ], 11 | "activationEvents": [ 12 | "onCommand:extension.sayHello" 13 | ], 14 | "main": "./extension", 15 | "contributes": { 16 | "commands": [ 17 | { 18 | "command": "extension.sayHello", 19 | "title": "Hello World" 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Extension.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | True 9 | paket-files/Fable.Import.VSCode.fs 10 | 11 | 12 | True 13 | paket-files/Helpers.fs 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/extension.fs: -------------------------------------------------------------------------------- 1 | module VSCodeFable 2 | 3 | open Fable.Import 4 | 5 | let activate (context : vscode.ExtensionContext) = 6 | printfn "Hello world" 7 | 8 | let action : obj -> obj = fun _ -> 9 | vscode.window.showInformationMessage("Hello world!", Array.empty) |> box 10 | 11 | vscode.commands.registerCommand("extension.sayHello", action) 12 | |> context.subscriptions.Add 13 | -------------------------------------------------------------------------------- /src/paket.references: -------------------------------------------------------------------------------- 1 | Fable.Core 2 | Fable.Promise 3 | Fable.Node 4 | Fable.Browser.Dom 5 | 6 | FSharp.Core 7 | 8 | File: Fable.Import.VSCode.fs 9 | File: Helpers.fs -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | function resolve(filePath) { 4 | return path.join(__dirname, filePath) 5 | } 6 | 7 | var babelOptions = { 8 | presets: [ 9 | ["@babel/preset-env", { 10 | "modules": false 11 | }] 12 | ], 13 | plugins: ["@babel/plugin-transform-runtime"] 14 | } 15 | 16 | module.exports = function(env, argv) { 17 | var isProduction = argv.mode == "production" 18 | console.log("Bundling for " + (isProduction ? "production" : "development") + "..."); 19 | 20 | var ionideExperimental = (env && env.ionideExperimental); 21 | var outputPath = ionideExperimental ? "release-exp" : "release"; 22 | console.log("Output path: " + outputPath); 23 | 24 | return { 25 | target: 'node', 26 | mode: isProduction ? "production" : "development", 27 | devtool: "source-map", 28 | entry: './out/extension.js', 29 | output: { 30 | filename: 'extension.js', 31 | path: resolve('./' + outputPath), 32 | libraryTarget: 'commonjs2' 33 | }, 34 | resolve: { 35 | modules: [resolve("./node_modules/")] 36 | }, 37 | //externals: [nodeExternals()], 38 | externals: { 39 | // Who came first the host or the plugin ? 40 | "vscode": "commonjs vscode", 41 | 42 | // Optional dependencies of ws 43 | "utf-8-validate": "commonjs utf-8-validate", 44 | "bufferutil": "commonjs bufferutil" 45 | }, 46 | module: { 47 | rules: [ 48 | { 49 | test: /\.js$/, 50 | exclude: /node_modules/, 51 | use: { 52 | loader: 'babel-loader', 53 | options: babelOptions 54 | }, 55 | } 56 | ] 57 | } 58 | }; 59 | } --------------------------------------------------------------------------------