├── .github └── FUNDING.yml ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── default.nix ├── examples ├── basic │ ├── .gitignore │ ├── build.js │ ├── elm.json │ ├── index.html │ ├── package.json │ ├── src │ │ ├── Main.elm │ │ └── index.js │ └── yarn.lock └── with-cwd │ ├── .gitignore │ ├── build.js │ ├── elm │ ├── elm.json │ └── src │ │ ├── Main.elm │ │ └── SomeModule.elm │ ├── index.html │ ├── index.js │ ├── package.json │ └── yarn.lock ├── index.js ├── package.json └── yarn.lock /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: phenax 2 | custom: ["https://www.buymeacoffee.com/phenax"] 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | elm-stuff/ 3 | dist/ 4 | *.log 5 | *.map 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | examples/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Akshay Nair 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 | # esbuild-plugin-elm 2 | An esbuild plugin for building elm projects 3 | 4 | [![npm](https://img.shields.io/npm/v/esbuild-plugin-elm?color=%2351e980&style=flat-square)](https://www.npmjs.com/package/esbuild-plugin-elm) 5 | 6 | 7 | 8 | ### Install 9 | Add this plugin to your project's dev-dependencies by running the following - 10 | 11 | ``` 12 | yarn add -D esbuild-plugin-elm 13 | // OR 14 | npm install -D esbuild-plugin-elm 15 | ``` 16 | 17 | 18 | ### Usage 19 | 20 | A simple example can be found in [./examples/basic/](https://github.com/phenax/esbuild-plugin-elm/tree/main/examples/basic). 21 | 22 | ```js 23 | esbuild.build({ 24 | entryPoints: ['src/index.js'], 25 | bundle: true, 26 | outfile: 'dist/bundle.js', 27 | plugins: [ 28 | ElmPlugin(options) // options are documented below 29 | ], 30 | }).catch(e => (console.error(e), process.exit(1))) 31 | ``` 32 | 33 | ### Import paths 34 | 35 | Import paths will be resolved using the paths listed in `source-directories` in `elm.json`. If none resolve, the import is assumed to be relative to the importing file. 36 | 37 | ### Options 38 | 39 | * `debug` *(default: `false`)*: 40 | 41 | Enable the time-travelling debugger 42 | 43 | * `optimize` *(default: `NODE_ENV === 'production'`)*: 44 | 45 | Optimize the js output (true by default if `NODE_ENV` is production) 46 | 47 | * `pathToElm` *(default: `node_modules/.bin/elm || elm`)*: 48 | 49 | Specify an explicit path to the elm executable 50 | 51 | * `clearOnWatch` *(default: `false`)*: 52 | 53 | Clear the console before re-building on file changes 54 | 55 | * `cwd` *(default: ``)*: 56 | 57 | The current working directory/elm project root 58 | 59 | * `verbose` *(default: `false`)*: 60 | 61 | Enable verbose output of `node-elm-compiler` 62 | 63 | 64 | ### Tutorials 65 | 66 | * [How to Install Elm, on a Rails App, via esbuild, using `esbuild-plugin-elm`](https://benkoshy.github.io/2022/02/08/elm-via-esbuild-on-rails.html) 67 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | { pkgs ? import { }, ... }: 2 | 3 | let 4 | packages = with pkgs; [ 5 | elmPackages.elm 6 | elmPackages.create-elm-app 7 | elmPackages.elm-format 8 | elmPackages.elm-language-server 9 | nodejs-18_x 10 | yarn 11 | ]; 12 | in 13 | pkgs.stdenv.mkDerivation { 14 | name = "esbuild-plugin-elm"; 15 | buildInputs = packages; 16 | } 17 | -------------------------------------------------------------------------------- /examples/basic/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | -------------------------------------------------------------------------------- /examples/basic/build.js: -------------------------------------------------------------------------------- 1 | const esbuild = require('esbuild'); 2 | const ElmPlugin = require('esbuild-plugin-elm'); 3 | 4 | const watch = process.argv.includes('--watch') 5 | const isProd = process.env.NODE_ENV === 'production' 6 | 7 | esbuild.build({ 8 | entryPoints: ['src/index.js'], 9 | bundle: true, 10 | outdir: 'dist', 11 | minify: isProd, 12 | watch, 13 | plugins: [ 14 | ElmPlugin({ 15 | debug: true, 16 | optimize: isProd, 17 | clearOnWatch: watch, 18 | verbose: true, 19 | }), 20 | ], 21 | }).catch(_e => process.exit(1)) 22 | -------------------------------------------------------------------------------- /examples/basic/elm.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "application", 3 | "source-directories": [ 4 | "src" 5 | ], 6 | "elm-version": "0.19.1", 7 | "dependencies": { 8 | "direct": { 9 | "elm/browser": "1.0.2", 10 | "elm/core": "1.0.5", 11 | "elm/html": "1.0.0" 12 | }, 13 | "indirect": { 14 | "elm/json": "1.1.3", 15 | "elm/time": "1.0.0", 16 | "elm/url": "1.0.0", 17 | "elm/virtual-dom": "1.0.2" 18 | } 19 | }, 20 | "test-dependencies": { 21 | "direct": {}, 22 | "indirect": {} 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /examples/basic/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Main 6 | 7 | 8 | 9 | 10 | 11 |

  12 | 
  13 | 
5269 | 
5270 | 
5271 | 


--------------------------------------------------------------------------------
/examples/basic/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "elm-esbuild-example",
 3 |   "version": "1.0.0",
 4 |   "main": "src/index.js",
 5 |   "license": "MIT",
 6 |   "scripts": {
 7 |     "build": "node ./build.js",
 8 |     "watch": "node ./build.js --watch"
 9 |   },
10 |   "dependencies": {
11 |     "elm": "^0.19.1-5",
12 |     "esbuild": "0.12.24",
13 |     "esbuild-plugin-elm": "file:../../"
14 |   }
15 | }
16 | 


--------------------------------------------------------------------------------
/examples/basic/src/Main.elm:
--------------------------------------------------------------------------------
 1 | module Main exposing (..)
 2 | 
 3 | import Browser
 4 | import Html exposing (Html, button, div, text)
 5 | import Html.Events exposing (onClick)
 6 | 
 7 | 
 8 | main : Program () Model Msg
 9 | main =
10 |     Browser.sandbox { init = init, update = update, view = view }
11 | 
12 | 
13 | type alias Model =
14 |     Int
15 | 
16 | 
17 | init : Model
18 | init =
19 |     0
20 | 
21 | 
22 | type Msg
23 |     = Increment
24 |     | Decrement
25 | 
26 | 
27 | update : Msg -> Model -> Model
28 | update msg model =
29 |     case msg of
30 |         Increment ->
31 |             model + 1
32 | 
33 |         Decrement ->
34 |             model - 1
35 | 
36 | 
37 | view : Model -> Html Msg
38 | view model =
39 |     div []
40 |         [ button [ onClick Decrement ] [ text "-" ]
41 |         , div [] [ text (String.fromInt model) ]
42 |         , button [ onClick Increment ] [ text "+" ]
43 |         ]
44 | 


--------------------------------------------------------------------------------
/examples/basic/src/index.js:
--------------------------------------------------------------------------------
 1 | import { Elm } from './Main.elm';
 2 | 
 3 | const $root = document.createElement('div');
 4 | document.body.appendChild($root);
 5 | 
 6 | Elm.Main.init({
 7 |   node: $root
 8 | });
 9 | 
10 | 


--------------------------------------------------------------------------------
/examples/basic/yarn.lock:
--------------------------------------------------------------------------------
  1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
  2 | # yarn lockfile v1
  3 | 
  4 | 
  5 | ajv@^6.12.3:
  6 |   version "6.12.6"
  7 |   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
  8 |   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
  9 |   dependencies:
 10 |     fast-deep-equal "^3.1.1"
 11 |     fast-json-stable-stringify "^2.0.0"
 12 |     json-schema-traverse "^0.4.1"
 13 |     uri-js "^4.2.2"
 14 | 
 15 | asn1@~0.2.3:
 16 |   version "0.2.4"
 17 |   resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
 18 |   integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
 19 |   dependencies:
 20 |     safer-buffer "~2.1.0"
 21 | 
 22 | assert-plus@1.0.0, assert-plus@^1.0.0:
 23 |   version "1.0.0"
 24 |   resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
 25 |   integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
 26 | 
 27 | asynckit@^0.4.0:
 28 |   version "0.4.0"
 29 |   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
 30 |   integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
 31 | 
 32 | aws-sign2@~0.7.0:
 33 |   version "0.7.0"
 34 |   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
 35 |   integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
 36 | 
 37 | aws4@^1.8.0:
 38 |   version "1.11.0"
 39 |   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
 40 |   integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
 41 | 
 42 | balanced-match@^1.0.0:
 43 |   version "1.0.2"
 44 |   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
 45 |   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 46 | 
 47 | bcrypt-pbkdf@^1.0.0:
 48 |   version "1.0.2"
 49 |   resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
 50 |   integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
 51 |   dependencies:
 52 |     tweetnacl "^0.14.3"
 53 | 
 54 | brace-expansion@^1.1.7:
 55 |   version "1.1.11"
 56 |   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
 57 |   integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
 58 |   dependencies:
 59 |     balanced-match "^1.0.0"
 60 |     concat-map "0.0.1"
 61 | 
 62 | caseless@~0.12.0:
 63 |   version "0.12.0"
 64 |   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
 65 |   integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
 66 | 
 67 | combined-stream@^1.0.6, combined-stream@~1.0.6:
 68 |   version "1.0.8"
 69 |   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
 70 |   integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
 71 |   dependencies:
 72 |     delayed-stream "~1.0.0"
 73 | 
 74 | command-exists@^1.2.9:
 75 |   version "1.2.9"
 76 |   resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
 77 |   integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
 78 | 
 79 | concat-map@0.0.1:
 80 |   version "0.0.1"
 81 |   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 82 |   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 83 | 
 84 | core-util-is@1.0.2:
 85 |   version "1.0.2"
 86 |   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 87 |   integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
 88 | 
 89 | cross-spawn@6.0.5:
 90 |   version "6.0.5"
 91 |   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
 92 |   integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
 93 |   dependencies:
 94 |     nice-try "^1.0.4"
 95 |     path-key "^2.0.1"
 96 |     semver "^5.5.0"
 97 |     shebang-command "^1.2.0"
 98 |     which "^1.2.9"
 99 | 
100 | dashdash@^1.12.0:
101 |   version "1.14.1"
102 |   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
103 |   integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
104 |   dependencies:
105 |     assert-plus "^1.0.0"
106 | 
107 | delayed-stream@~1.0.0:
108 |   version "1.0.0"
109 |   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
110 |   integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
111 | 
112 | ecc-jsbn@~0.1.1:
113 |   version "0.1.2"
114 |   resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
115 |   integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
116 |   dependencies:
117 |     jsbn "~0.1.0"
118 |     safer-buffer "^2.1.0"
119 | 
120 | elm@^0.19.1-5:
121 |   version "0.19.1-5"
122 |   resolved "https://registry.yarnpkg.com/elm/-/elm-0.19.1-5.tgz#61f18437222972e20f316f9b2d2c76a781a9991b"
123 |   integrity sha512-dyBoPvFiNLvxOStQJdyq28gZEjS/enZXdZ5yyCtNtDEMbFJJVQq4pYNRKvhrKKdlxNot6d96iQe1uczoqO5yvA==
124 |   dependencies:
125 |     request "^2.88.0"
126 | 
127 | "esbuild-plugin-elm@file:../..":
128 |   version "0.0.12"
129 |   dependencies:
130 |     command-exists "^1.2.9"
131 |     node-elm-compiler "^5.0.6"
132 | 
133 | esbuild@0.12.24:
134 |   version "0.12.24"
135 |   resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.24.tgz#21966fad25a80f368ed308101e88102bce0dc68f"
136 |   integrity sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==
137 | 
138 | extend@~3.0.2:
139 |   version "3.0.2"
140 |   resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
141 |   integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
142 | 
143 | extsprintf@1.3.0:
144 |   version "1.3.0"
145 |   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
146 |   integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
147 | 
148 | extsprintf@^1.2.0:
149 |   version "1.4.0"
150 |   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
151 |   integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
152 | 
153 | fast-deep-equal@^3.1.1:
154 |   version "3.1.3"
155 |   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
156 |   integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
157 | 
158 | fast-json-stable-stringify@^2.0.0:
159 |   version "2.1.0"
160 |   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
161 |   integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
162 | 
163 | find-elm-dependencies@^2.0.4:
164 |   version "2.0.4"
165 |   resolved "https://registry.yarnpkg.com/find-elm-dependencies/-/find-elm-dependencies-2.0.4.tgz#0a327fc8c0c0297b54115efbf0a9d6de474cfc89"
166 |   integrity sha512-x/4w4fVmlD2X4PD9oQ+yh9EyaQef6OtEULdMGBTuWx0Nkppvo2Z/bAiQioW2n+GdRYKypME2b9OmYTw5tw5qDg==
167 |   dependencies:
168 |     firstline "^1.2.0"
169 |     lodash "^4.17.19"
170 | 
171 | firstline@^1.2.0:
172 |   version "1.3.1"
173 |   resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.3.1.tgz#59e84af0fd858fbc6dac0a0ff97fd22a47e58084"
174 |   integrity sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg==
175 | 
176 | forever-agent@~0.6.1:
177 |   version "0.6.1"
178 |   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
179 |   integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
180 | 
181 | form-data@~2.3.2:
182 |   version "2.3.3"
183 |   resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
184 |   integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
185 |   dependencies:
186 |     asynckit "^0.4.0"
187 |     combined-stream "^1.0.6"
188 |     mime-types "^2.1.12"
189 | 
190 | fs.realpath@^1.0.0:
191 |   version "1.0.0"
192 |   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
193 |   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
194 | 
195 | getpass@^0.1.1:
196 |   version "0.1.7"
197 |   resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
198 |   integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
199 |   dependencies:
200 |     assert-plus "^1.0.0"
201 | 
202 | glob@^7.1.3:
203 |   version "7.2.3"
204 |   resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
205 |   integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
206 |   dependencies:
207 |     fs.realpath "^1.0.0"
208 |     inflight "^1.0.4"
209 |     inherits "2"
210 |     minimatch "^3.1.1"
211 |     once "^1.3.0"
212 |     path-is-absolute "^1.0.0"
213 | 
214 | har-schema@^2.0.0:
215 |   version "2.0.0"
216 |   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
217 |   integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
218 | 
219 | har-validator@~5.1.3:
220 |   version "5.1.5"
221 |   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
222 |   integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
223 |   dependencies:
224 |     ajv "^6.12.3"
225 |     har-schema "^2.0.0"
226 | 
227 | http-signature@~1.2.0:
228 |   version "1.2.0"
229 |   resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
230 |   integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
231 |   dependencies:
232 |     assert-plus "^1.0.0"
233 |     jsprim "^1.2.2"
234 |     sshpk "^1.7.0"
235 | 
236 | inflight@^1.0.4:
237 |   version "1.0.6"
238 |   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
239 |   integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
240 |   dependencies:
241 |     once "^1.3.0"
242 |     wrappy "1"
243 | 
244 | inherits@2:
245 |   version "2.0.4"
246 |   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
247 |   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
248 | 
249 | is-typedarray@~1.0.0:
250 |   version "1.0.0"
251 |   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
252 |   integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
253 | 
254 | isexe@^2.0.0:
255 |   version "2.0.0"
256 |   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
257 |   integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
258 | 
259 | isstream@~0.1.2:
260 |   version "0.1.2"
261 |   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
262 |   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
263 | 
264 | jsbn@~0.1.0:
265 |   version "0.1.1"
266 |   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
267 |   integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
268 | 
269 | json-schema-traverse@^0.4.1:
270 |   version "0.4.1"
271 |   resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
272 |   integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
273 | 
274 | json-schema@0.2.3:
275 |   version "0.2.3"
276 |   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
277 |   integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
278 | 
279 | json-stringify-safe@~5.0.1:
280 |   version "5.0.1"
281 |   resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
282 |   integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
283 | 
284 | jsprim@^1.2.2:
285 |   version "1.4.1"
286 |   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
287 |   integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
288 |   dependencies:
289 |     assert-plus "1.0.0"
290 |     extsprintf "1.3.0"
291 |     json-schema "0.2.3"
292 |     verror "1.10.0"
293 | 
294 | lodash@^4.17.19:
295 |   version "4.17.21"
296 |   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
297 |   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
298 | 
299 | mime-db@1.46.0:
300 |   version "1.46.0"
301 |   resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee"
302 |   integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==
303 | 
304 | mime-types@^2.1.12, mime-types@~2.1.19:
305 |   version "2.1.29"
306 |   resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2"
307 |   integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==
308 |   dependencies:
309 |     mime-db "1.46.0"
310 | 
311 | minimatch@^3.1.1:
312 |   version "3.1.2"
313 |   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
314 |   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
315 |   dependencies:
316 |     brace-expansion "^1.1.7"
317 | 
318 | minimist@^1.2.6:
319 |   version "1.2.8"
320 |   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
321 |   integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
322 | 
323 | mkdirp@^0.5.1:
324 |   version "0.5.6"
325 |   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
326 |   integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
327 |   dependencies:
328 |     minimist "^1.2.6"
329 | 
330 | nice-try@^1.0.4:
331 |   version "1.0.5"
332 |   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
333 |   integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
334 | 
335 | node-elm-compiler@^5.0.6:
336 |   version "5.0.6"
337 |   resolved "https://registry.yarnpkg.com/node-elm-compiler/-/node-elm-compiler-5.0.6.tgz#d4a6e6c9d9a26dba4211ccd2aeae7d5e34057f0c"
338 |   integrity sha512-DWTRQR8b54rvschcZRREdsz7K84lnS8A6YJu8du3QLQ8f204SJbyTaA6NzYYbfUG97OTRKRv/0KZl82cTfpLhA==
339 |   dependencies:
340 |     cross-spawn "6.0.5"
341 |     find-elm-dependencies "^2.0.4"
342 |     lodash "^4.17.19"
343 |     temp "^0.9.0"
344 | 
345 | oauth-sign@~0.9.0:
346 |   version "0.9.0"
347 |   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
348 |   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
349 | 
350 | once@^1.3.0:
351 |   version "1.4.0"
352 |   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
353 |   integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
354 |   dependencies:
355 |     wrappy "1"
356 | 
357 | path-is-absolute@^1.0.0:
358 |   version "1.0.1"
359 |   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
360 |   integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
361 | 
362 | path-key@^2.0.1:
363 |   version "2.0.1"
364 |   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
365 |   integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
366 | 
367 | performance-now@^2.1.0:
368 |   version "2.1.0"
369 |   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
370 |   integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
371 | 
372 | psl@^1.1.28:
373 |   version "1.8.0"
374 |   resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
375 |   integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
376 | 
377 | punycode@^2.1.0, punycode@^2.1.1:
378 |   version "2.1.1"
379 |   resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
380 |   integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
381 | 
382 | qs@~6.5.2:
383 |   version "6.5.2"
384 |   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
385 |   integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
386 | 
387 | request@^2.88.0:
388 |   version "2.88.2"
389 |   resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
390 |   integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
391 |   dependencies:
392 |     aws-sign2 "~0.7.0"
393 |     aws4 "^1.8.0"
394 |     caseless "~0.12.0"
395 |     combined-stream "~1.0.6"
396 |     extend "~3.0.2"
397 |     forever-agent "~0.6.1"
398 |     form-data "~2.3.2"
399 |     har-validator "~5.1.3"
400 |     http-signature "~1.2.0"
401 |     is-typedarray "~1.0.0"
402 |     isstream "~0.1.2"
403 |     json-stringify-safe "~5.0.1"
404 |     mime-types "~2.1.19"
405 |     oauth-sign "~0.9.0"
406 |     performance-now "^2.1.0"
407 |     qs "~6.5.2"
408 |     safe-buffer "^5.1.2"
409 |     tough-cookie "~2.5.0"
410 |     tunnel-agent "^0.6.0"
411 |     uuid "^3.3.2"
412 | 
413 | rimraf@~2.6.2:
414 |   version "2.6.3"
415 |   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
416 |   integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
417 |   dependencies:
418 |     glob "^7.1.3"
419 | 
420 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
421 |   version "5.2.1"
422 |   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
423 |   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
424 | 
425 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
426 |   version "2.1.2"
427 |   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
428 |   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
429 | 
430 | semver@^5.5.0:
431 |   version "5.7.2"
432 |   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
433 |   integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
434 | 
435 | shebang-command@^1.2.0:
436 |   version "1.2.0"
437 |   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
438 |   integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
439 |   dependencies:
440 |     shebang-regex "^1.0.0"
441 | 
442 | shebang-regex@^1.0.0:
443 |   version "1.0.0"
444 |   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
445 |   integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
446 | 
447 | sshpk@^1.7.0:
448 |   version "1.16.1"
449 |   resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
450 |   integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
451 |   dependencies:
452 |     asn1 "~0.2.3"
453 |     assert-plus "^1.0.0"
454 |     bcrypt-pbkdf "^1.0.0"
455 |     dashdash "^1.12.0"
456 |     ecc-jsbn "~0.1.1"
457 |     getpass "^0.1.1"
458 |     jsbn "~0.1.0"
459 |     safer-buffer "^2.0.2"
460 |     tweetnacl "~0.14.0"
461 | 
462 | temp@^0.9.0:
463 |   version "0.9.4"
464 |   resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
465 |   integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
466 |   dependencies:
467 |     mkdirp "^0.5.1"
468 |     rimraf "~2.6.2"
469 | 
470 | tough-cookie@~2.5.0:
471 |   version "2.5.0"
472 |   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
473 |   integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
474 |   dependencies:
475 |     psl "^1.1.28"
476 |     punycode "^2.1.1"
477 | 
478 | tunnel-agent@^0.6.0:
479 |   version "0.6.0"
480 |   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
481 |   integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
482 |   dependencies:
483 |     safe-buffer "^5.0.1"
484 | 
485 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
486 |   version "0.14.5"
487 |   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
488 |   integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
489 | 
490 | uri-js@^4.2.2:
491 |   version "4.4.1"
492 |   resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
493 |   integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
494 |   dependencies:
495 |     punycode "^2.1.0"
496 | 
497 | uuid@^3.3.2:
498 |   version "3.4.0"
499 |   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
500 |   integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
501 | 
502 | verror@1.10.0:
503 |   version "1.10.0"
504 |   resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
505 |   integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
506 |   dependencies:
507 |     assert-plus "^1.0.0"
508 |     core-util-is "1.0.2"
509 |     extsprintf "^1.2.0"
510 | 
511 | which@^1.2.9:
512 |   version "1.3.1"
513 |   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
514 |   integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
515 |   dependencies:
516 |     isexe "^2.0.0"
517 | 
518 | wrappy@1:
519 |   version "1.0.2"
520 |   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
521 |   integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
522 | 


--------------------------------------------------------------------------------
/examples/with-cwd/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | 


--------------------------------------------------------------------------------
/examples/with-cwd/build.js:
--------------------------------------------------------------------------------
 1 | const esbuild = require('esbuild');
 2 | const ElmPlugin = require('esbuild-plugin-elm');
 3 | 
 4 | const watch = process.argv.includes('--watch')
 5 | const isProd = process.env.NODE_ENV === 'production'
 6 | 
 7 | esbuild.build({
 8 |   entryPoints: ['index.js'],
 9 |   bundle: true,
10 |   outdir: 'dist',
11 |   minify: isProd,
12 |   watch,
13 |   plugins: [
14 |     ElmPlugin({
15 |       optimize: isProd,
16 |       cwd: 'elm',
17 |       clearOnWatch: watch,
18 |       verbose: true,
19 |     }),
20 |   ],
21 | }).catch(_e => process.exit(1))
22 | 


--------------------------------------------------------------------------------
/examples/with-cwd/elm/elm.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "type": "application",
 3 |     "source-directories": [
 4 |         "src"
 5 |     ],
 6 |     "elm-version": "0.19.1",
 7 |     "dependencies": {
 8 |         "direct": {
 9 |             "elm/browser": "1.0.2",
10 |             "elm/core": "1.0.5",
11 |             "elm/html": "1.0.0"
12 |         },
13 |         "indirect": {
14 |             "elm/json": "1.1.3",
15 |             "elm/time": "1.0.0",
16 |             "elm/url": "1.0.0",
17 |             "elm/virtual-dom": "1.0.2"
18 |         }
19 |     },
20 |     "test-dependencies": {
21 |         "direct": {},
22 |         "indirect": {}
23 |     }
24 | }
25 | 


--------------------------------------------------------------------------------
/examples/with-cwd/elm/src/Main.elm:
--------------------------------------------------------------------------------
 1 | module Main exposing (..)
 2 | 
 3 | import Browser
 4 | import Html exposing (Html, button, div, text)
 5 | import Html.Events exposing (onClick)
 6 | import SomeModule exposing (increment, decrement)
 7 | 
 8 | 
 9 | main : Program () Model Msg
10 | main =
11 |     Browser.sandbox { init = init, update = update, view = view }
12 | 
13 | 
14 | type alias Model =
15 |     Int
16 | 
17 | 
18 | init : Model
19 | init =
20 |     0
21 | 
22 | 
23 | type Msg
24 |     = Increment
25 |     | Decrement
26 | 
27 | 
28 | update : Msg -> Model -> Model
29 | update msg model =
30 |     case msg of
31 |         Increment -> increment model
32 |         Decrement -> decrement model
33 | 
34 | 
35 | view : Model -> Html Msg
36 | view model =
37 |     div []
38 |         [ button [ onClick Decrement ] [ text "-" ]
39 |         , div [] [ text (String.fromInt model) ]
40 |         , button [ onClick Increment ] [ text "+" ]
41 |         ]
42 | 


--------------------------------------------------------------------------------
/examples/with-cwd/elm/src/SomeModule.elm:
--------------------------------------------------------------------------------
1 | module SomeModule exposing (..)
2 | 
3 | increment : Int -> Int
4 | increment n = n + 1
5 | 
6 | decrement : Int -> Int
7 | decrement n = n - 1
8 | 


--------------------------------------------------------------------------------
/examples/with-cwd/index.js:
--------------------------------------------------------------------------------
 1 | import { Elm } from './elm/src/Main.elm';
 2 | 
 3 | const $root = document.createElement('div');
 4 | document.body.appendChild($root);
 5 | 
 6 | Elm.Main.init({
 7 |   node: $root
 8 | });
 9 | 
10 | 


--------------------------------------------------------------------------------
/examples/with-cwd/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "elm-esbuild-example-with-cwd",
 3 |   "version": "1.0.0",
 4 |   "main": "index.js",
 5 |   "license": "MIT",
 6 |   "scripts": {
 7 |     "build": "node ./build.js",
 8 |     "watch": "node ./build.js --watch"
 9 |   },
10 |   "dependencies": {
11 |     "elm": "^0.19.1-5",
12 |     "esbuild": "0.12.24",
13 |     "esbuild-plugin-elm": "file:../../"
14 |   }
15 | }
16 | 


--------------------------------------------------------------------------------
/examples/with-cwd/yarn.lock:
--------------------------------------------------------------------------------
  1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
  2 | # yarn lockfile v1
  3 | 
  4 | 
  5 | ajv@^6.12.3:
  6 |   version "6.12.6"
  7 |   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
  8 |   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
  9 |   dependencies:
 10 |     fast-deep-equal "^3.1.1"
 11 |     fast-json-stable-stringify "^2.0.0"
 12 |     json-schema-traverse "^0.4.1"
 13 |     uri-js "^4.2.2"
 14 | 
 15 | asn1@~0.2.3:
 16 |   version "0.2.4"
 17 |   resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
 18 |   integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
 19 |   dependencies:
 20 |     safer-buffer "~2.1.0"
 21 | 
 22 | assert-plus@1.0.0, assert-plus@^1.0.0:
 23 |   version "1.0.0"
 24 |   resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
 25 |   integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
 26 | 
 27 | asynckit@^0.4.0:
 28 |   version "0.4.0"
 29 |   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
 30 |   integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
 31 | 
 32 | aws-sign2@~0.7.0:
 33 |   version "0.7.0"
 34 |   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
 35 |   integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
 36 | 
 37 | aws4@^1.8.0:
 38 |   version "1.11.0"
 39 |   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
 40 |   integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
 41 | 
 42 | balanced-match@^1.0.0:
 43 |   version "1.0.2"
 44 |   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
 45 |   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 46 | 
 47 | bcrypt-pbkdf@^1.0.0:
 48 |   version "1.0.2"
 49 |   resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
 50 |   integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
 51 |   dependencies:
 52 |     tweetnacl "^0.14.3"
 53 | 
 54 | brace-expansion@^1.1.7:
 55 |   version "1.1.11"
 56 |   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
 57 |   integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
 58 |   dependencies:
 59 |     balanced-match "^1.0.0"
 60 |     concat-map "0.0.1"
 61 | 
 62 | caseless@~0.12.0:
 63 |   version "0.12.0"
 64 |   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
 65 |   integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
 66 | 
 67 | combined-stream@^1.0.6, combined-stream@~1.0.6:
 68 |   version "1.0.8"
 69 |   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
 70 |   integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
 71 |   dependencies:
 72 |     delayed-stream "~1.0.0"
 73 | 
 74 | command-exists@^1.2.9:
 75 |   version "1.2.9"
 76 |   resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
 77 |   integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
 78 | 
 79 | concat-map@0.0.1:
 80 |   version "0.0.1"
 81 |   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 82 |   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 83 | 
 84 | core-util-is@1.0.2:
 85 |   version "1.0.2"
 86 |   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 87 |   integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
 88 | 
 89 | cross-spawn@6.0.5:
 90 |   version "6.0.5"
 91 |   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
 92 |   integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
 93 |   dependencies:
 94 |     nice-try "^1.0.4"
 95 |     path-key "^2.0.1"
 96 |     semver "^5.5.0"
 97 |     shebang-command "^1.2.0"
 98 |     which "^1.2.9"
 99 | 
100 | dashdash@^1.12.0:
101 |   version "1.14.1"
102 |   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
103 |   integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
104 |   dependencies:
105 |     assert-plus "^1.0.0"
106 | 
107 | delayed-stream@~1.0.0:
108 |   version "1.0.0"
109 |   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
110 |   integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
111 | 
112 | ecc-jsbn@~0.1.1:
113 |   version "0.1.2"
114 |   resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
115 |   integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
116 |   dependencies:
117 |     jsbn "~0.1.0"
118 |     safer-buffer "^2.1.0"
119 | 
120 | elm@^0.19.1-5:
121 |   version "0.19.1-5"
122 |   resolved "https://registry.yarnpkg.com/elm/-/elm-0.19.1-5.tgz#61f18437222972e20f316f9b2d2c76a781a9991b"
123 |   integrity sha512-dyBoPvFiNLvxOStQJdyq28gZEjS/enZXdZ5yyCtNtDEMbFJJVQq4pYNRKvhrKKdlxNot6d96iQe1uczoqO5yvA==
124 |   dependencies:
125 |     request "^2.88.0"
126 | 
127 | "esbuild-plugin-elm@file:../..":
128 |   version "0.0.12"
129 |   dependencies:
130 |     command-exists "^1.2.9"
131 |     node-elm-compiler "^5.0.6"
132 | 
133 | esbuild@0.12.24:
134 |   version "0.12.24"
135 |   resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.24.tgz#21966fad25a80f368ed308101e88102bce0dc68f"
136 |   integrity sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==
137 | 
138 | extend@~3.0.2:
139 |   version "3.0.2"
140 |   resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
141 |   integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
142 | 
143 | extsprintf@1.3.0:
144 |   version "1.3.0"
145 |   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
146 |   integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
147 | 
148 | extsprintf@^1.2.0:
149 |   version "1.4.0"
150 |   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
151 |   integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
152 | 
153 | fast-deep-equal@^3.1.1:
154 |   version "3.1.3"
155 |   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
156 |   integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
157 | 
158 | fast-json-stable-stringify@^2.0.0:
159 |   version "2.1.0"
160 |   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
161 |   integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
162 | 
163 | find-elm-dependencies@^2.0.4:
164 |   version "2.0.4"
165 |   resolved "https://registry.yarnpkg.com/find-elm-dependencies/-/find-elm-dependencies-2.0.4.tgz#0a327fc8c0c0297b54115efbf0a9d6de474cfc89"
166 |   integrity sha512-x/4w4fVmlD2X4PD9oQ+yh9EyaQef6OtEULdMGBTuWx0Nkppvo2Z/bAiQioW2n+GdRYKypME2b9OmYTw5tw5qDg==
167 |   dependencies:
168 |     firstline "^1.2.0"
169 |     lodash "^4.17.19"
170 | 
171 | firstline@^1.2.0:
172 |   version "1.3.1"
173 |   resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.3.1.tgz#59e84af0fd858fbc6dac0a0ff97fd22a47e58084"
174 |   integrity sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg==
175 | 
176 | forever-agent@~0.6.1:
177 |   version "0.6.1"
178 |   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
179 |   integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
180 | 
181 | form-data@~2.3.2:
182 |   version "2.3.3"
183 |   resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
184 |   integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
185 |   dependencies:
186 |     asynckit "^0.4.0"
187 |     combined-stream "^1.0.6"
188 |     mime-types "^2.1.12"
189 | 
190 | fs.realpath@^1.0.0:
191 |   version "1.0.0"
192 |   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
193 |   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
194 | 
195 | getpass@^0.1.1:
196 |   version "0.1.7"
197 |   resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
198 |   integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
199 |   dependencies:
200 |     assert-plus "^1.0.0"
201 | 
202 | glob@^7.1.3:
203 |   version "7.2.3"
204 |   resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
205 |   integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
206 |   dependencies:
207 |     fs.realpath "^1.0.0"
208 |     inflight "^1.0.4"
209 |     inherits "2"
210 |     minimatch "^3.1.1"
211 |     once "^1.3.0"
212 |     path-is-absolute "^1.0.0"
213 | 
214 | har-schema@^2.0.0:
215 |   version "2.0.0"
216 |   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
217 |   integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
218 | 
219 | har-validator@~5.1.3:
220 |   version "5.1.5"
221 |   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
222 |   integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
223 |   dependencies:
224 |     ajv "^6.12.3"
225 |     har-schema "^2.0.0"
226 | 
227 | http-signature@~1.2.0:
228 |   version "1.2.0"
229 |   resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
230 |   integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
231 |   dependencies:
232 |     assert-plus "^1.0.0"
233 |     jsprim "^1.2.2"
234 |     sshpk "^1.7.0"
235 | 
236 | inflight@^1.0.4:
237 |   version "1.0.6"
238 |   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
239 |   integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
240 |   dependencies:
241 |     once "^1.3.0"
242 |     wrappy "1"
243 | 
244 | inherits@2:
245 |   version "2.0.4"
246 |   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
247 |   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
248 | 
249 | is-typedarray@~1.0.0:
250 |   version "1.0.0"
251 |   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
252 |   integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
253 | 
254 | isexe@^2.0.0:
255 |   version "2.0.0"
256 |   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
257 |   integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
258 | 
259 | isstream@~0.1.2:
260 |   version "0.1.2"
261 |   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
262 |   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
263 | 
264 | jsbn@~0.1.0:
265 |   version "0.1.1"
266 |   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
267 |   integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
268 | 
269 | json-schema-traverse@^0.4.1:
270 |   version "0.4.1"
271 |   resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
272 |   integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
273 | 
274 | json-schema@0.2.3:
275 |   version "0.2.3"
276 |   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
277 |   integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
278 | 
279 | json-stringify-safe@~5.0.1:
280 |   version "5.0.1"
281 |   resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
282 |   integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
283 | 
284 | jsprim@^1.2.2:
285 |   version "1.4.1"
286 |   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
287 |   integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
288 |   dependencies:
289 |     assert-plus "1.0.0"
290 |     extsprintf "1.3.0"
291 |     json-schema "0.2.3"
292 |     verror "1.10.0"
293 | 
294 | lodash@^4.17.19:
295 |   version "4.17.21"
296 |   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
297 |   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
298 | 
299 | mime-db@1.46.0:
300 |   version "1.46.0"
301 |   resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee"
302 |   integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==
303 | 
304 | mime-types@^2.1.12, mime-types@~2.1.19:
305 |   version "2.1.29"
306 |   resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2"
307 |   integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==
308 |   dependencies:
309 |     mime-db "1.46.0"
310 | 
311 | minimatch@^3.1.1:
312 |   version "3.1.2"
313 |   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
314 |   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
315 |   dependencies:
316 |     brace-expansion "^1.1.7"
317 | 
318 | minimist@^1.2.6:
319 |   version "1.2.8"
320 |   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
321 |   integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
322 | 
323 | mkdirp@^0.5.1:
324 |   version "0.5.6"
325 |   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
326 |   integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
327 |   dependencies:
328 |     minimist "^1.2.6"
329 | 
330 | nice-try@^1.0.4:
331 |   version "1.0.5"
332 |   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
333 |   integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
334 | 
335 | node-elm-compiler@^5.0.6:
336 |   version "5.0.6"
337 |   resolved "https://registry.yarnpkg.com/node-elm-compiler/-/node-elm-compiler-5.0.6.tgz#d4a6e6c9d9a26dba4211ccd2aeae7d5e34057f0c"
338 |   integrity sha512-DWTRQR8b54rvschcZRREdsz7K84lnS8A6YJu8du3QLQ8f204SJbyTaA6NzYYbfUG97OTRKRv/0KZl82cTfpLhA==
339 |   dependencies:
340 |     cross-spawn "6.0.5"
341 |     find-elm-dependencies "^2.0.4"
342 |     lodash "^4.17.19"
343 |     temp "^0.9.0"
344 | 
345 | oauth-sign@~0.9.0:
346 |   version "0.9.0"
347 |   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
348 |   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
349 | 
350 | once@^1.3.0:
351 |   version "1.4.0"
352 |   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
353 |   integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
354 |   dependencies:
355 |     wrappy "1"
356 | 
357 | path-is-absolute@^1.0.0:
358 |   version "1.0.1"
359 |   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
360 |   integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
361 | 
362 | path-key@^2.0.1:
363 |   version "2.0.1"
364 |   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
365 |   integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
366 | 
367 | performance-now@^2.1.0:
368 |   version "2.1.0"
369 |   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
370 |   integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
371 | 
372 | psl@^1.1.28:
373 |   version "1.8.0"
374 |   resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
375 |   integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
376 | 
377 | punycode@^2.1.0, punycode@^2.1.1:
378 |   version "2.1.1"
379 |   resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
380 |   integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
381 | 
382 | qs@~6.5.2:
383 |   version "6.5.2"
384 |   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
385 |   integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
386 | 
387 | request@^2.88.0:
388 |   version "2.88.2"
389 |   resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
390 |   integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
391 |   dependencies:
392 |     aws-sign2 "~0.7.0"
393 |     aws4 "^1.8.0"
394 |     caseless "~0.12.0"
395 |     combined-stream "~1.0.6"
396 |     extend "~3.0.2"
397 |     forever-agent "~0.6.1"
398 |     form-data "~2.3.2"
399 |     har-validator "~5.1.3"
400 |     http-signature "~1.2.0"
401 |     is-typedarray "~1.0.0"
402 |     isstream "~0.1.2"
403 |     json-stringify-safe "~5.0.1"
404 |     mime-types "~2.1.19"
405 |     oauth-sign "~0.9.0"
406 |     performance-now "^2.1.0"
407 |     qs "~6.5.2"
408 |     safe-buffer "^5.1.2"
409 |     tough-cookie "~2.5.0"
410 |     tunnel-agent "^0.6.0"
411 |     uuid "^3.3.2"
412 | 
413 | rimraf@~2.6.2:
414 |   version "2.6.3"
415 |   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
416 |   integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
417 |   dependencies:
418 |     glob "^7.1.3"
419 | 
420 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
421 |   version "5.2.1"
422 |   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
423 |   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
424 | 
425 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
426 |   version "2.1.2"
427 |   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
428 |   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
429 | 
430 | semver@^5.5.0:
431 |   version "5.7.2"
432 |   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
433 |   integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
434 | 
435 | shebang-command@^1.2.0:
436 |   version "1.2.0"
437 |   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
438 |   integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
439 |   dependencies:
440 |     shebang-regex "^1.0.0"
441 | 
442 | shebang-regex@^1.0.0:
443 |   version "1.0.0"
444 |   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
445 |   integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
446 | 
447 | sshpk@^1.7.0:
448 |   version "1.16.1"
449 |   resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
450 |   integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
451 |   dependencies:
452 |     asn1 "~0.2.3"
453 |     assert-plus "^1.0.0"
454 |     bcrypt-pbkdf "^1.0.0"
455 |     dashdash "^1.12.0"
456 |     ecc-jsbn "~0.1.1"
457 |     getpass "^0.1.1"
458 |     jsbn "~0.1.0"
459 |     safer-buffer "^2.0.2"
460 |     tweetnacl "~0.14.0"
461 | 
462 | temp@^0.9.0:
463 |   version "0.9.4"
464 |   resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
465 |   integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
466 |   dependencies:
467 |     mkdirp "^0.5.1"
468 |     rimraf "~2.6.2"
469 | 
470 | tough-cookie@~2.5.0:
471 |   version "2.5.0"
472 |   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
473 |   integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
474 |   dependencies:
475 |     psl "^1.1.28"
476 |     punycode "^2.1.1"
477 | 
478 | tunnel-agent@^0.6.0:
479 |   version "0.6.0"
480 |   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
481 |   integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
482 |   dependencies:
483 |     safe-buffer "^5.0.1"
484 | 
485 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
486 |   version "0.14.5"
487 |   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
488 |   integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
489 | 
490 | uri-js@^4.2.2:
491 |   version "4.4.1"
492 |   resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
493 |   integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
494 |   dependencies:
495 |     punycode "^2.1.0"
496 | 
497 | uuid@^3.3.2:
498 |   version "3.4.0"
499 |   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
500 |   integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
501 | 
502 | verror@1.10.0:
503 |   version "1.10.0"
504 |   resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
505 |   integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
506 |   dependencies:
507 |     assert-plus "^1.0.0"
508 |     core-util-is "1.0.2"
509 |     extsprintf "^1.2.0"
510 | 
511 | which@^1.2.9:
512 |   version "1.3.1"
513 |   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
514 |   integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
515 |   dependencies:
516 |     isexe "^2.0.0"
517 | 
518 | wrappy@1:
519 |   version "1.0.2"
520 |   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
521 |   integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
522 | 


--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
  1 | const path = require('path');
  2 | const fs = require('fs').promises;
  3 | const elmCompiler = require('node-elm-compiler');
  4 | const commandExists_ = require('command-exists');
  5 | 
  6 | const namespace = 'elm';
  7 | const fileFilter = /\.elm$/;
  8 | 
  9 | const PURE_FUNCS = [ 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9']
 10 | 
 11 | // Like command-exists' function but returns undefined when the command is missing,
 12 | // instead of throwing an error.
 13 | const commandExists = path =>
 14 |   commandExists_(path).catch(_ => undefined);
 15 | 
 16 | const getPathToElm = async () => {
 17 |   const commands = [path.resolve('./node_modules/.bin/elm'), 'elm'];
 18 |   const CMD_NOT_FOUND_ERR = 'Could not find `elm` executable. You can install it with `yarn add elm` or `npm install elm`';
 19 | 
 20 |   const foundCommands = await Promise.all(commands.map(commandExists));
 21 | 
 22 |   const elmCommand = foundCommands.find(cmd => cmd !== undefined);
 23 | 
 24 |   if (elmCommand) {
 25 |     return elmCommand;
 26 |   } else {
 27 |     throw new Error(CMD_NOT_FOUND_ERR);
 28 |   }
 29 | }
 30 | 
 31 | 
 32 | // Cached version of `fs.stat`.
 33 | // Cache is cleared on each build.
 34 | const readFileModificationTime = async (fileCache, filePath) => {
 35 |   const cached = fileCache.get(filePath);
 36 | 
 37 |   if (cached !== undefined) {
 38 |     return cached;
 39 |   }
 40 |   const stat = await fs.stat(filePath);
 41 |   const fileContents = stat.mtimeMs;
 42 | 
 43 |   fileCache.set(filePath, fileContents);
 44 | 
 45 |   return fileContents;
 46 | };
 47 | 
 48 | const toBuildError = error => ({ text: error.message });
 49 | 
 50 | // Checks whether all deps for a "main" elm file are unchanged.
 51 | // These only include source deps (might need to reset the dev server if you add an extra dep).
 52 | // If not, we need to recompile the file importing them.
 53 | const validateDependencies = async (fileCache, depsMap) => {
 54 |   const depStatus = await Promise.all([...depsMap].map(async ([depPath, cachedDep]) => {
 55 |     const newInput = await readFileModificationTime(fileCache, depPath);
 56 | 
 57 |     if (cachedDep.input === newInput) {
 58 |       return true;
 59 |     }
 60 |     cachedDep.input = newInput;
 61 |     return false;
 62 |   }));
 63 | 
 64 |   return depStatus.every(isReady => isReady);
 65 | };
 66 | 
 67 | // Cached version of `elmCompiler.compileToStringSync`
 68 | // Cache is persisted across builds
 69 | const checkCache = async (fileCache, cache, mainFilePath, compileOptions) => {
 70 |   const cached = cache.get(mainFilePath);
 71 |   const newInput = await readFileModificationTime(fileCache, mainFilePath);
 72 | 
 73 |   const depsUnchanged = await validateDependencies(fileCache, cached.dependencies);
 74 | 
 75 |   if (depsUnchanged && cached.input === newInput) {
 76 |     return cached.output;
 77 |   }
 78 |   // Can't use the async version:
 79 |   // https://github.com/phenax/esbuild-plugin-elm/issues/2
 80 |   const contents = elmCompiler.compileToStringSync([mainFilePath], compileOptions);
 81 |   const output = { contents };
 82 | 
 83 |   cache.set(mainFilePath, {
 84 |     input: newInput,
 85 |     output,
 86 |     dependencies: cached.dependencies,
 87 |   });
 88 | 
 89 |   return output;
 90 | };
 91 | 
 92 | // Recompute dependencies but keep cached artifacts if we had them
 93 | const updateDependencies = (cache, resolvedPath, dependencyPaths) => {
 94 |   let cached = cache.get(resolvedPath)
 95 |     || { input: undefined, output: undefined, dependencies: new Map() };
 96 | 
 97 |   const newValue = depPath => cached.dependencies.get(depPath) || { input: undefined };
 98 |   const dependencies = new Map(dependencyPaths.map(depPath => [depPath, newValue(depPath)]));
 99 | 
100 |   cache.set(resolvedPath, {
101 |     ...cached,
102 |     dependencies,
103 |   });
104 | };
105 | 
106 | const cachedElmCompiler = () => {
107 |   const cache = new Map();
108 | 
109 |   const compileToStringSync = async (fileCache, inputPath, compileOptions) => {
110 |     try {
111 |       const output = await checkCache(fileCache, cache, inputPath, compileOptions);
112 | 
113 |       return output;
114 |     } catch (e) {
115 |       return { errors: [toBuildError(e)] };
116 |     }
117 |   };
118 | 
119 |   return { cache, compileToStringSync };
120 | };
121 | 
122 | const fileExists = (file) => {
123 |   return fs.stat(file).then(stat => stat.isFile()).catch(_ => false);
124 | };
125 | 
126 | // Attempts to resolve a file path by joining to each load path, and returns the
127 | // resolved path if that file exists.
128 | // If no load paths are provided, or none resolve, the file path is assumed to
129 | // be relative to `resolveDir`.
130 | const resolvePath = async (resolveDir, filePath, loadPaths = []) => {
131 |   for (const loadPath of loadPaths) {
132 |     const joinedPath = path.join(loadPath, filePath);
133 | 
134 |     if (await fileExists(joinedPath)) {
135 |       return joinedPath;
136 |     }
137 |   }
138 | 
139 |   return path.join(resolveDir, filePath);
140 | };
141 | 
142 | const getLoadPaths = async (cwd = '.') => {
143 |   const readFile = await fs.readFile(path.join(cwd, 'elm.json'), 'utf8');
144 |   const elmPackage = JSON.parse(readFile);
145 | 
146 |   const paths = elmPackage['source-directories'].map((dir) => {
147 |       return path.join(cwd, dir);
148 |   });
149 | 
150 |   return paths;
151 | }
152 | 
153 | module.exports = (config = {}) => ({
154 |   name: 'elm',
155 |   async setup(build) {
156 |     const isProd = process.env.NODE_ENV === 'production';
157 | 
158 |     const { optimize = isProd, cwd, debug, verbose, clearOnWatch } = config
159 |     const pathToElm = config.pathToElm || await getPathToElm();
160 | 
161 |     const options = build.initialOptions
162 |     if (options.minify) {
163 |       Object.assign(options, {
164 |         pure: [ ...(options.pure || []), ...PURE_FUNCS ],
165 |       })
166 |     }
167 | 
168 |     const compileOptions = {
169 |       pathToElm,
170 |       optimize,
171 |       processOpts: { stdout: 'pipe' },
172 |       cwd,
173 |       debug,
174 |       verbose,
175 |     };
176 | 
177 |     const { cache, compileToStringSync } = cachedElmCompiler();
178 | 
179 |     const fileCache = new Map();
180 |     build.onStart(() => {
181 |       fileCache.clear();
182 |     });
183 | 
184 |     const loadPaths = await getLoadPaths(cwd);
185 | 
186 |     build.onResolve({ filter: fileFilter }, async (args) => {
187 |       const resolvedPath = await resolvePath(args.resolveDir, args.path, loadPaths);
188 |       const resolvedDependencies = await elmCompiler.findAllDependencies(resolvedPath);
189 | 
190 |       // I think we need to update deps on each resolve because you might
191 |       // change your imports on every build
192 |       updateDependencies(cache, resolvedPath, resolvedDependencies);
193 | 
194 |       return ({
195 |         path: resolvedPath,
196 |         namespace,
197 |         watchFiles: [resolvedPath, ...resolvedDependencies],
198 |       });
199 |     });
200 | 
201 |     build.onLoad({ filter: /.*/, namespace }, async (args) => {
202 |       if (clearOnWatch) {
203 |         // eslint-disable-next-line no-console
204 |         console.clear();
205 |       }
206 | 
207 |       return compileToStringSync(fileCache, args.path, compileOptions);
208 |     });
209 |   },
210 | });
211 | 


--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "esbuild-plugin-elm",
 3 |   "version": "0.0.12",
 4 |   "description": "Esbuild plugin for loading elm",
 5 |   "main": "index.js",
 6 |   "repository": "https://github.com/phenax/esbuild-plugin-elm",
 7 |   "homepage": "https://github.com/phenax/esbuild-plugin-elm",
 8 |   "author": "Akshay Nair ",
 9 |   "license": "MIT",
10 |   "dependencies": {
11 |     "command-exists": "^1.2.9",
12 |     "node-elm-compiler": "^5.0.6"
13 |   },
14 |   "peerDependencies": {
15 |     "esbuild": ">=0.8.1"
16 |   },
17 |   "devDependencies": {
18 |     "esbuild": ">=0.8.1"
19 |   }
20 | }
21 | 


--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
  1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
  2 | # yarn lockfile v1
  3 | 
  4 | 
  5 | balanced-match@^1.0.0:
  6 |   version "1.0.0"
  7 |   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
  8 |   integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
  9 | 
 10 | brace-expansion@^1.1.7:
 11 |   version "1.1.11"
 12 |   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
 13 |   integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
 14 |   dependencies:
 15 |     balanced-match "^1.0.0"
 16 |     concat-map "0.0.1"
 17 | 
 18 | command-exists@^1.2.9:
 19 |   version "1.2.9"
 20 |   resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
 21 |   integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
 22 | 
 23 | concat-map@0.0.1:
 24 |   version "0.0.1"
 25 |   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 26 |   integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
 27 | 
 28 | cross-spawn@6.0.5:
 29 |   version "6.0.5"
 30 |   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
 31 |   integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
 32 |   dependencies:
 33 |     nice-try "^1.0.4"
 34 |     path-key "^2.0.1"
 35 |     semver "^5.5.0"
 36 |     shebang-command "^1.2.0"
 37 |     which "^1.2.9"
 38 | 
 39 | esbuild-android-arm64@0.13.14:
 40 |   version "0.13.14"
 41 |   resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.14.tgz#c85083ece26be3d67e6c720e088968a98409e023"
 42 |   integrity sha512-Q+Xhfp827r+ma8/DJgpMRUbDZfefsk13oePFEXEIJ4gxFbNv5+vyiYXYuKm43/+++EJXpnaYmEnu4hAKbAWYbA==
 43 | 
 44 | esbuild-darwin-64@0.13.14:
 45 |   version "0.13.14"
 46 |   resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.14.tgz#8e4e237ad847cc54a1d3a5caee26a746b9f0b81f"
 47 |   integrity sha512-YmOhRns6QBNSjpVdTahi/yZ8dscx9ai7a6OY6z5ACgOuQuaQ2Qk2qgJ0/siZ6LgD0gJFMV8UINFV5oky5TFNQQ==
 48 | 
 49 | esbuild-darwin-arm64@0.13.14:
 50 |   version "0.13.14"
 51 |   resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.14.tgz#b3b5ebd40b2cb06ee0f6fb342dd4bdcca54ad273"
 52 |   integrity sha512-Lp00VTli2jqZghSa68fx3fEFCPsO1hK59RMo1PRap5RUjhf55OmaZTZYnCDI0FVlCtt+gBwX5qwFt4lc6tI1xg==
 53 | 
 54 | esbuild-freebsd-64@0.13.14:
 55 |   version "0.13.14"
 56 |   resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.14.tgz#175ecb2fa8141428cf70ea2d5f4c27534bad53e0"
 57 |   integrity sha512-BKosI3jtvTfnmsCW37B1TyxMUjkRWKqopR0CE9AF2ratdpkxdR24Vpe3gLKNyWiZ7BE96/SO5/YfhbPUzY8wKw==
 58 | 
 59 | esbuild-freebsd-arm64@0.13.14:
 60 |   version "0.13.14"
 61 |   resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.14.tgz#a7d64e41d1fa581f8db7775e5200f18e67d70c4d"
 62 |   integrity sha512-yd2uh0yf+fWv5114+SYTl4/1oDWtr4nN5Op+PGxAkMqHfYfLjFKpcxwCo/QOS/0NWqPVE8O41IYZlFhbEN2B8Q==
 63 | 
 64 | esbuild-linux-32@0.13.14:
 65 |   version "0.13.14"
 66 |   resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.14.tgz#14bdd4f6b6cfd35c65c835894651ba335c2117da"
 67 |   integrity sha512-a8rOnS1oWSfkkYWXoD2yXNV4BdbDKA7PNVQ1klqkY9SoSApL7io66w5H44mTLsfyw7G6Z2vLlaLI2nz9MMAowA==
 68 | 
 69 | esbuild-linux-64@0.13.14:
 70 |   version "0.13.14"
 71 |   resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.14.tgz#7fd56851b2982fdd0cd8447ee9858c2c5711708a"
 72 |   integrity sha512-yPZSoMs9W2MC3Dw+6kflKt5FfQm6Dicex9dGIr1OlHRsn3Hm7yGMUTctlkW53KknnZdOdcdd5upxvbxqymczVQ==
 73 | 
 74 | esbuild-linux-arm64@0.13.14:
 75 |   version "0.13.14"
 76 |   resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.14.tgz#a55634d70679ba509adeafd68eebb9fd1ec5af6c"
 77 |   integrity sha512-Lvo391ln9PzC334e+jJ2S0Rt0cxP47eoH5gFyv/E8HhOnEJTvm7A+RRnMjjHnejELacTTfYgFGQYPjLsi/jObQ==
 78 | 
 79 | esbuild-linux-arm@0.13.14:
 80 |   version "0.13.14"
 81 |   resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.14.tgz#bb96a99677e608b31ff61f37564326d38e846ca2"
 82 |   integrity sha512-8chZE4pkKRvJ/M/iwsNQ1KqsRg2RyU5eT/x2flNt/f8F2TVrDreR7I0HEeCR50wLla3B1C3wTIOzQBmjuc6uWg==
 83 | 
 84 | esbuild-linux-mips64le@0.13.14:
 85 |   version "0.13.14"
 86 |   resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.14.tgz#6a55362a8fd1e593dea2ecc41877beed8b8184b9"
 87 |   integrity sha512-MZhgxbmrWbpY3TOE029O6l5tokG9+Yoj2hW7vdit/d/VnmneqeGrSHADuDL6qXM8L5jaCiaivb4VhsyVCpdAbQ==
 88 | 
 89 | esbuild-linux-ppc64le@0.13.14:
 90 |   version "0.13.14"
 91 |   resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.14.tgz#9e0048587ece0a7f184ab147f20d077098045e7f"
 92 |   integrity sha512-un7KMwS7fX1Un6BjfSZxTT8L5cV/8Uf4SAhM7WYy2XF8o8TI+uRxxD03svZnRNIPsN2J5cl6qV4n7Iwz+yhhVw==
 93 | 
 94 | esbuild-netbsd-64@0.13.14:
 95 |   version "0.13.14"
 96 |   resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.14.tgz#dcab16a4bbcfa16e2e8535dadc5f64fdc891c63b"
 97 |   integrity sha512-5ekKx/YbOmmlTeNxBjh38Uh5TGn5C4uyqN17i67k18pS3J+U2hTVD7rCxcFcRS1AjNWumkVL3jWqYXadFwMS0Q==
 98 | 
 99 | esbuild-openbsd-64@0.13.14:
100 |   version "0.13.14"
101 |   resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.14.tgz#3c7453b155ebb68dc34d5aec3bd6505337bdda08"
102 |   integrity sha512-9bzvwewHjct2Cv5XcVoE1yW5YTW12Sk838EYfA46abgnhxGoFSD1mFcaztp5HHC43AsF+hQxbSFG/RilONARUA==
103 | 
104 | esbuild-sunos-64@0.13.14:
105 |   version "0.13.14"
106 |   resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.14.tgz#85addf5fef6b5db154a955d4f2e88953359d75ce"
107 |   integrity sha512-mjMrZB76M6FmoiTvj/RGWilrioR7gVwtFBRVugr9qLarXMIU1W/pQx+ieEOtflrW61xo8w1fcxyHsVVGRvoQ0w==
108 | 
109 | esbuild-windows-32@0.13.14:
110 |   version "0.13.14"
111 |   resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.14.tgz#f77f98f30a5c636c44db2428ecdf9bcbbaedb1a7"
112 |   integrity sha512-GZa6mrx2rgfbH/5uHg0Rdw50TuOKbdoKCpEBitzmG5tsXBdce+cOL+iFO5joZc6fDVCLW3Y6tjxmSXRk/v20Hg==
113 | 
114 | esbuild-windows-64@0.13.14:
115 |   version "0.13.14"
116 |   resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.14.tgz#bc778674c40d65150d12385e0f23eb3a0badbd0d"
117 |   integrity sha512-Lsgqah24bT7ClHjLp/Pj3A9wxjhIAJyWQcrOV4jqXAFikmrp2CspA8IkJgw7HFjx6QrJuhpcKVbCAe/xw0i2yw==
118 | 
119 | esbuild-windows-arm64@0.13.14:
120 |   version "0.13.14"
121 |   resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.14.tgz#91a8dad35ab2c4dd27cd83860742955b25a354d7"
122 |   integrity sha512-KP8FHVlWGhM7nzYtURsGnskXb/cBCPTfj0gOKfjKq2tHtYnhDZywsUG57nk7TKhhK0fL11LcejHG3LRW9RF/9A==
123 | 
124 | esbuild@>=0.8.1:
125 |   version "0.13.14"
126 |   resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.14.tgz#98a3f7f42809abdc2b57c84565d0f713382dc1a5"
127 |   integrity sha512-xu4D+1ji9x53ocuomcY+KOrwAnWzhBu/wTEjpdgZ8I1c8i5vboYIeigMdzgY1UowYBKa2vZgVgUB32bu7gkxeg==
128 |   optionalDependencies:
129 |     esbuild-android-arm64 "0.13.14"
130 |     esbuild-darwin-64 "0.13.14"
131 |     esbuild-darwin-arm64 "0.13.14"
132 |     esbuild-freebsd-64 "0.13.14"
133 |     esbuild-freebsd-arm64 "0.13.14"
134 |     esbuild-linux-32 "0.13.14"
135 |     esbuild-linux-64 "0.13.14"
136 |     esbuild-linux-arm "0.13.14"
137 |     esbuild-linux-arm64 "0.13.14"
138 |     esbuild-linux-mips64le "0.13.14"
139 |     esbuild-linux-ppc64le "0.13.14"
140 |     esbuild-netbsd-64 "0.13.14"
141 |     esbuild-openbsd-64 "0.13.14"
142 |     esbuild-sunos-64 "0.13.14"
143 |     esbuild-windows-32 "0.13.14"
144 |     esbuild-windows-64 "0.13.14"
145 |     esbuild-windows-arm64 "0.13.14"
146 | 
147 | find-elm-dependencies@^2.0.4:
148 |   version "2.0.4"
149 |   resolved "https://registry.yarnpkg.com/find-elm-dependencies/-/find-elm-dependencies-2.0.4.tgz#0a327fc8c0c0297b54115efbf0a9d6de474cfc89"
150 |   integrity sha512-x/4w4fVmlD2X4PD9oQ+yh9EyaQef6OtEULdMGBTuWx0Nkppvo2Z/bAiQioW2n+GdRYKypME2b9OmYTw5tw5qDg==
151 |   dependencies:
152 |     firstline "^1.2.0"
153 |     lodash "^4.17.19"
154 | 
155 | firstline@^1.2.0:
156 |   version "1.3.1"
157 |   resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.3.1.tgz#59e84af0fd858fbc6dac0a0ff97fd22a47e58084"
158 |   integrity sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg==
159 | 
160 | fs.realpath@^1.0.0:
161 |   version "1.0.0"
162 |   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
163 |   integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
164 | 
165 | glob@^7.1.3:
166 |   version "7.1.6"
167 |   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
168 |   integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
169 |   dependencies:
170 |     fs.realpath "^1.0.0"
171 |     inflight "^1.0.4"
172 |     inherits "2"
173 |     minimatch "^3.0.4"
174 |     once "^1.3.0"
175 |     path-is-absolute "^1.0.0"
176 | 
177 | inflight@^1.0.4:
178 |   version "1.0.6"
179 |   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
180 |   integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
181 |   dependencies:
182 |     once "^1.3.0"
183 |     wrappy "1"
184 | 
185 | inherits@2:
186 |   version "2.0.4"
187 |   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
188 |   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
189 | 
190 | isexe@^2.0.0:
191 |   version "2.0.0"
192 |   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
193 |   integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
194 | 
195 | lodash@^4.17.19:
196 |   version "4.17.21"
197 |   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
198 |   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
199 | 
200 | minimatch@^3.0.4:
201 |   version "3.0.4"
202 |   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
203 |   integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
204 |   dependencies:
205 |     brace-expansion "^1.1.7"
206 | 
207 | minimist@^1.2.5:
208 |   version "1.2.5"
209 |   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
210 |   integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
211 | 
212 | mkdirp@^0.5.1:
213 |   version "0.5.5"
214 |   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
215 |   integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
216 |   dependencies:
217 |     minimist "^1.2.5"
218 | 
219 | nice-try@^1.0.4:
220 |   version "1.0.5"
221 |   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
222 |   integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
223 | 
224 | node-elm-compiler@^5.0.6:
225 |   version "5.0.6"
226 |   resolved "https://registry.yarnpkg.com/node-elm-compiler/-/node-elm-compiler-5.0.6.tgz#d4a6e6c9d9a26dba4211ccd2aeae7d5e34057f0c"
227 |   integrity sha512-DWTRQR8b54rvschcZRREdsz7K84lnS8A6YJu8du3QLQ8f204SJbyTaA6NzYYbfUG97OTRKRv/0KZl82cTfpLhA==
228 |   dependencies:
229 |     cross-spawn "6.0.5"
230 |     find-elm-dependencies "^2.0.4"
231 |     lodash "^4.17.19"
232 |     temp "^0.9.0"
233 | 
234 | once@^1.3.0:
235 |   version "1.4.0"
236 |   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
237 |   integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
238 |   dependencies:
239 |     wrappy "1"
240 | 
241 | path-is-absolute@^1.0.0:
242 |   version "1.0.1"
243 |   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
244 |   integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
245 | 
246 | path-key@^2.0.1:
247 |   version "2.0.1"
248 |   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
249 |   integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
250 | 
251 | rimraf@~2.6.2:
252 |   version "2.6.3"
253 |   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
254 |   integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
255 |   dependencies:
256 |     glob "^7.1.3"
257 | 
258 | semver@^5.5.0:
259 |   version "5.7.1"
260 |   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
261 |   integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
262 | 
263 | shebang-command@^1.2.0:
264 |   version "1.2.0"
265 |   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
266 |   integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
267 |   dependencies:
268 |     shebang-regex "^1.0.0"
269 | 
270 | shebang-regex@^1.0.0:
271 |   version "1.0.0"
272 |   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
273 |   integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
274 | 
275 | temp@^0.9.0:
276 |   version "0.9.4"
277 |   resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
278 |   integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
279 |   dependencies:
280 |     mkdirp "^0.5.1"
281 |     rimraf "~2.6.2"
282 | 
283 | which@^1.2.9:
284 |   version "1.3.1"
285 |   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
286 |   integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
287 |   dependencies:
288 |     isexe "^2.0.0"
289 | 
290 | wrappy@1:
291 |   version "1.0.2"
292 |   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
293 |   integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
294 | 


--------------------------------------------------------------------------------