├── .gitignore
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── .vscodeignore
├── CHANGELOG.md
├── README.md
├── images
├── example_tree.gif
├── logo.png
└── logo.svg
├── package-lock.json
├── package.json
├── src
├── extension.ts
└── test
│ ├── extension.test.ts
│ └── index.ts
├── tsconfig.json
└── tslint.json
/.gitignore:
--------------------------------------------------------------------------------
1 | out
2 | node_modules
3 | .vscode-test/
4 | *.vsix
5 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See http://go.microsoft.com/fwlink/?LinkId=827846
3 | // for the documentation about the extensions.json format
4 | "recommendations": [
5 | "ms-vscode.vscode-typescript-tslint-plugin"
6 | ]
7 | }
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | // A launch configuration that compiles the extension and then opens it inside a new window
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | {
6 | "version": "0.2.0",
7 | "configurations": [{
8 | "name": "Run Extension",
9 | "type": "extensionHost",
10 | "request": "launch",
11 | "runtimeExecutable": "${execPath}",
12 | "args": [
13 | "--extensionDevelopmentPath=${workspaceFolder}"
14 | ],
15 | "outFiles": [
16 | "${workspaceFolder}/out/**/*.js"
17 | ],
18 | "preLaunchTask": "npm: watch"
19 | },
20 | {
21 | "name": "Extension Tests",
22 | "type": "extensionHost",
23 | "request": "launch",
24 | "runtimeExecutable": "${execPath}",
25 | "args": [
26 | "--extensionDevelopmentPath=${workspaceFolder}",
27 | "--extensionTestsPath=${workspaceFolder}/out/test"
28 | ],
29 | "outFiles": [
30 | "${workspaceFolder}/out/test/**/*.js"
31 | ],
32 | "preLaunchTask": "npm: watch"
33 | }
34 | ]
35 | }
36 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | // Place your settings in this file to overwrite default and user settings.
2 | {
3 | "files.exclude": {
4 | "out": false // set this to true to hide the "out" folder with the compiled JS files
5 | },
6 | "search.exclude": {
7 | "out": true // set this to false to include "out" folder in search results
8 | },
9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
10 | "typescript.tsc.autoDetect": "off"
11 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | // See https://go.microsoft.com/fwlink/?LinkId=733558
2 | // for the documentation about the tasks.json format
3 | {
4 | "version": "2.0.0",
5 | "tasks": [
6 | {
7 | "type": "npm",
8 | "script": "watch",
9 | "problemMatcher": "$tsc-watch",
10 | "isBackground": true,
11 | "presentation": {
12 | "reveal": "never"
13 | },
14 | "group": {
15 | "kind": "build",
16 | "isDefault": true
17 | }
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/.vscodeignore:
--------------------------------------------------------------------------------
1 | **/*.svg
2 | .vscode/**
3 | .vscode-test/**
4 | out/test/**
5 | src/**
6 | .gitignore
7 | vsc-extension-quickstart.md
8 | **/tsconfig.json
9 | **/tslint.json
10 | **/*.map
11 | **/*.ts
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## [Unreleased]
4 |
5 | - Initial release
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fp-ts Codegen
2 |
3 | Expands haskell-syntax ADTs to typescript equivalent types definitions using [gcanti/fp-ts-codegen](https://github.com/gcanti/fp-ts-codegen), check the [online playground](https://gcanti.github.io/fp-ts-codegen/).
4 |
5 | ## Features
6 |
7 | 
8 |
9 | ## Extension Settings
10 |
11 | This extension contributes the following settings:
12 |
13 | * `fp-ts-codegen.tagName`: the name of the field used as tag
14 | * `fp-ts-codegen.foldName`: the name prefix used for pattern matching functions
15 | * `fp-ts-codegen.matcheeName`: the name used for the input of pattern matching functions
16 | * `fp-ts-codegen.handlersStyle`: the pattern matching handlers can be expressed as positional arguments or a single object literal `tag -> handler`
17 | * `fp-ts-codegen.handlersName`: the name used for the handler if handlersStyle is \"record\"
18 | * `fp-ts-codegen.encoding`: the encoding to generate the types, either `literal` for pure TS or `fp-ts`, to use fp-ts constructs
19 |
20 | ## Release Notes
21 |
22 | ### 1.0.0
23 |
24 | Initial release of vscode-fp-ts-codegen.
25 |
26 | - Use [gcanti/fp-ts-codegen](https://github.com/gcanti/fp-ts-codegen) for expanding ADTs
27 |
--------------------------------------------------------------------------------
/images/example_tree.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betafcc/vscode-fp-ts-codegen/abe2e86f360be2ec324952ef7c410838f02026d9/images/example_tree.gif
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betafcc/vscode-fp-ts-codegen/abe2e86f360be2ec324952ef7c410838f02026d9/images/logo.png
--------------------------------------------------------------------------------
/images/logo.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vscode-fp-ts-codegen",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.0.0",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.0.0"
14 | }
15 | },
16 | "@babel/highlight": {
17 | "version": "7.0.0",
18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
20 | "dev": true,
21 | "requires": {
22 | "chalk": "^2.0.0",
23 | "esutils": "^2.0.2",
24 | "js-tokens": "^4.0.0"
25 | }
26 | },
27 | "@types/mocha": {
28 | "version": "2.2.48",
29 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz",
30 | "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==",
31 | "dev": true
32 | },
33 | "@types/node": {
34 | "version": "10.14.7",
35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.7.tgz",
36 | "integrity": "sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==",
37 | "dev": true
38 | },
39 | "agent-base": {
40 | "version": "4.2.1",
41 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
42 | "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
43 | "dev": true,
44 | "requires": {
45 | "es6-promisify": "^5.0.0"
46 | }
47 | },
48 | "ajv": {
49 | "version": "6.10.0",
50 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
51 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
52 | "dev": true,
53 | "requires": {
54 | "fast-deep-equal": "^2.0.1",
55 | "fast-json-stable-stringify": "^2.0.0",
56 | "json-schema-traverse": "^0.4.1",
57 | "uri-js": "^4.2.2"
58 | }
59 | },
60 | "ansi-styles": {
61 | "version": "3.2.1",
62 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
63 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
64 | "dev": true,
65 | "requires": {
66 | "color-convert": "^1.9.0"
67 | }
68 | },
69 | "argparse": {
70 | "version": "1.0.10",
71 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
72 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
73 | "dev": true,
74 | "requires": {
75 | "sprintf-js": "~1.0.2"
76 | }
77 | },
78 | "asn1": {
79 | "version": "0.2.4",
80 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
81 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
82 | "dev": true,
83 | "requires": {
84 | "safer-buffer": "~2.1.0"
85 | }
86 | },
87 | "assert-plus": {
88 | "version": "1.0.0",
89 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
90 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
91 | "dev": true
92 | },
93 | "asynckit": {
94 | "version": "0.4.0",
95 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
96 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
97 | "dev": true
98 | },
99 | "aws-sign2": {
100 | "version": "0.7.0",
101 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
102 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
103 | "dev": true
104 | },
105 | "aws4": {
106 | "version": "1.8.0",
107 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
108 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
109 | "dev": true
110 | },
111 | "balanced-match": {
112 | "version": "1.0.0",
113 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
114 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
115 | "dev": true
116 | },
117 | "bcrypt-pbkdf": {
118 | "version": "1.0.2",
119 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
120 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
121 | "dev": true,
122 | "requires": {
123 | "tweetnacl": "^0.14.3"
124 | }
125 | },
126 | "brace-expansion": {
127 | "version": "1.1.11",
128 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
129 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
130 | "dev": true,
131 | "requires": {
132 | "balanced-match": "^1.0.0",
133 | "concat-map": "0.0.1"
134 | }
135 | },
136 | "browser-stdout": {
137 | "version": "1.3.0",
138 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
139 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
140 | "dev": true
141 | },
142 | "buffer-from": {
143 | "version": "1.1.1",
144 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
145 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
146 | "dev": true
147 | },
148 | "builtin-modules": {
149 | "version": "1.1.1",
150 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
151 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
152 | "dev": true
153 | },
154 | "caseless": {
155 | "version": "0.12.0",
156 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
157 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
158 | "dev": true
159 | },
160 | "chalk": {
161 | "version": "2.4.2",
162 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
163 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
164 | "dev": true,
165 | "requires": {
166 | "ansi-styles": "^3.2.1",
167 | "escape-string-regexp": "^1.0.5",
168 | "supports-color": "^5.3.0"
169 | }
170 | },
171 | "color-convert": {
172 | "version": "1.9.3",
173 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
174 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
175 | "dev": true,
176 | "requires": {
177 | "color-name": "1.1.3"
178 | }
179 | },
180 | "color-name": {
181 | "version": "1.1.3",
182 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
183 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
184 | "dev": true
185 | },
186 | "combined-stream": {
187 | "version": "1.0.8",
188 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
189 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
190 | "dev": true,
191 | "requires": {
192 | "delayed-stream": "~1.0.0"
193 | }
194 | },
195 | "commander": {
196 | "version": "2.20.0",
197 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
198 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
199 | "dev": true
200 | },
201 | "concat-map": {
202 | "version": "0.0.1",
203 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
204 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
205 | "dev": true
206 | },
207 | "core-util-is": {
208 | "version": "1.0.2",
209 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
210 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
211 | "dev": true
212 | },
213 | "dashdash": {
214 | "version": "1.14.1",
215 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
216 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
217 | "dev": true,
218 | "requires": {
219 | "assert-plus": "^1.0.0"
220 | }
221 | },
222 | "debug": {
223 | "version": "3.1.0",
224 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
225 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
226 | "dev": true,
227 | "requires": {
228 | "ms": "2.0.0"
229 | }
230 | },
231 | "delayed-stream": {
232 | "version": "1.0.0",
233 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
234 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
235 | "dev": true
236 | },
237 | "diff": {
238 | "version": "3.5.0",
239 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
240 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
241 | "dev": true
242 | },
243 | "ecc-jsbn": {
244 | "version": "0.1.2",
245 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
246 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
247 | "dev": true,
248 | "requires": {
249 | "jsbn": "~0.1.0",
250 | "safer-buffer": "^2.1.0"
251 | }
252 | },
253 | "es6-promise": {
254 | "version": "4.2.6",
255 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
256 | "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
257 | "dev": true
258 | },
259 | "es6-promisify": {
260 | "version": "5.0.0",
261 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
262 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
263 | "dev": true,
264 | "requires": {
265 | "es6-promise": "^4.0.3"
266 | }
267 | },
268 | "escape-string-regexp": {
269 | "version": "1.0.5",
270 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
271 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
272 | "dev": true
273 | },
274 | "esprima": {
275 | "version": "4.0.1",
276 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
277 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
278 | "dev": true
279 | },
280 | "esutils": {
281 | "version": "2.0.2",
282 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
283 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
284 | "dev": true
285 | },
286 | "extend": {
287 | "version": "3.0.2",
288 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
289 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
290 | "dev": true
291 | },
292 | "extsprintf": {
293 | "version": "1.3.0",
294 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
295 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
296 | "dev": true
297 | },
298 | "fast-deep-equal": {
299 | "version": "2.0.1",
300 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
301 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
302 | "dev": true
303 | },
304 | "fast-json-stable-stringify": {
305 | "version": "2.0.0",
306 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
307 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
308 | "dev": true
309 | },
310 | "forever-agent": {
311 | "version": "0.6.1",
312 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
313 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
314 | "dev": true
315 | },
316 | "form-data": {
317 | "version": "2.3.3",
318 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
319 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
320 | "dev": true,
321 | "requires": {
322 | "asynckit": "^0.4.0",
323 | "combined-stream": "^1.0.6",
324 | "mime-types": "^2.1.12"
325 | }
326 | },
327 | "fp-ts": {
328 | "version": "1.18.1",
329 | "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.18.1.tgz",
330 | "integrity": "sha512-esfGgsuc0S9Q23YnoWQH4DrnBIJ7LCbA7AsUKFwawVsYmVZ7Cl+3cjd8nAhJLWwpUKDRsBsMJOf+uX4ZakZMsQ=="
331 | },
332 | "fp-ts-codegen": {
333 | "version": "0.3.0",
334 | "resolved": "https://registry.npmjs.org/fp-ts-codegen/-/fp-ts-codegen-0.3.0.tgz",
335 | "integrity": "sha512-+a6tfdZ3HzBs9fpGZo83RrqrtE2UEsf80lk2pv4goa98+hWZTPgqz3JB5sO3ZRgqV0YkmNrvkaeWalyDe9XFrw==",
336 | "requires": {
337 | "fp-ts": "^1.14.1",
338 | "monocle-ts": "^1.5.3",
339 | "parser-ts": "^0.5.1",
340 | "typescript": "^3.2.4"
341 | }
342 | },
343 | "fs.realpath": {
344 | "version": "1.0.0",
345 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
346 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
347 | "dev": true
348 | },
349 | "getpass": {
350 | "version": "0.1.7",
351 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
352 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
353 | "dev": true,
354 | "requires": {
355 | "assert-plus": "^1.0.0"
356 | }
357 | },
358 | "glob": {
359 | "version": "7.1.4",
360 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
361 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
362 | "dev": true,
363 | "requires": {
364 | "fs.realpath": "^1.0.0",
365 | "inflight": "^1.0.4",
366 | "inherits": "2",
367 | "minimatch": "^3.0.4",
368 | "once": "^1.3.0",
369 | "path-is-absolute": "^1.0.0"
370 | }
371 | },
372 | "growl": {
373 | "version": "1.10.3",
374 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
375 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
376 | "dev": true
377 | },
378 | "har-schema": {
379 | "version": "2.0.0",
380 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
381 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
382 | "dev": true
383 | },
384 | "har-validator": {
385 | "version": "5.1.3",
386 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
387 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
388 | "dev": true,
389 | "requires": {
390 | "ajv": "^6.5.5",
391 | "har-schema": "^2.0.0"
392 | }
393 | },
394 | "has-flag": {
395 | "version": "3.0.0",
396 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
397 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
398 | "dev": true
399 | },
400 | "he": {
401 | "version": "1.1.1",
402 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
403 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
404 | "dev": true
405 | },
406 | "http-proxy-agent": {
407 | "version": "2.1.0",
408 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
409 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
410 | "dev": true,
411 | "requires": {
412 | "agent-base": "4",
413 | "debug": "3.1.0"
414 | }
415 | },
416 | "http-signature": {
417 | "version": "1.2.0",
418 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
419 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
420 | "dev": true,
421 | "requires": {
422 | "assert-plus": "^1.0.0",
423 | "jsprim": "^1.2.2",
424 | "sshpk": "^1.7.0"
425 | }
426 | },
427 | "https-proxy-agent": {
428 | "version": "2.2.1",
429 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
430 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
431 | "dev": true,
432 | "requires": {
433 | "agent-base": "^4.1.0",
434 | "debug": "^3.1.0"
435 | }
436 | },
437 | "inflight": {
438 | "version": "1.0.6",
439 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
440 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
441 | "dev": true,
442 | "requires": {
443 | "once": "^1.3.0",
444 | "wrappy": "1"
445 | }
446 | },
447 | "inherits": {
448 | "version": "2.0.3",
449 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
450 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
451 | "dev": true
452 | },
453 | "is-typedarray": {
454 | "version": "1.0.0",
455 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
456 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
457 | "dev": true
458 | },
459 | "isstream": {
460 | "version": "0.1.2",
461 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
462 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
463 | "dev": true
464 | },
465 | "js-tokens": {
466 | "version": "4.0.0",
467 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
468 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
469 | "dev": true
470 | },
471 | "js-yaml": {
472 | "version": "3.13.1",
473 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
474 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
475 | "dev": true,
476 | "requires": {
477 | "argparse": "^1.0.7",
478 | "esprima": "^4.0.0"
479 | }
480 | },
481 | "jsbn": {
482 | "version": "0.1.1",
483 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
484 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
485 | "dev": true
486 | },
487 | "json-schema": {
488 | "version": "0.2.3",
489 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
490 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
491 | "dev": true
492 | },
493 | "json-schema-traverse": {
494 | "version": "0.4.1",
495 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
496 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
497 | "dev": true
498 | },
499 | "json-stringify-safe": {
500 | "version": "5.0.1",
501 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
502 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
503 | "dev": true
504 | },
505 | "jsprim": {
506 | "version": "1.4.1",
507 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
508 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
509 | "dev": true,
510 | "requires": {
511 | "assert-plus": "1.0.0",
512 | "extsprintf": "1.3.0",
513 | "json-schema": "0.2.3",
514 | "verror": "1.10.0"
515 | }
516 | },
517 | "mime-db": {
518 | "version": "1.40.0",
519 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
520 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
521 | "dev": true
522 | },
523 | "mime-types": {
524 | "version": "2.1.24",
525 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
526 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
527 | "dev": true,
528 | "requires": {
529 | "mime-db": "1.40.0"
530 | }
531 | },
532 | "minimatch": {
533 | "version": "3.0.4",
534 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
535 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
536 | "dev": true,
537 | "requires": {
538 | "brace-expansion": "^1.1.7"
539 | }
540 | },
541 | "minimist": {
542 | "version": "0.0.8",
543 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
544 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
545 | "dev": true
546 | },
547 | "mkdirp": {
548 | "version": "0.5.1",
549 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
550 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
551 | "dev": true,
552 | "requires": {
553 | "minimist": "0.0.8"
554 | }
555 | },
556 | "mocha": {
557 | "version": "4.1.0",
558 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
559 | "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==",
560 | "dev": true,
561 | "requires": {
562 | "browser-stdout": "1.3.0",
563 | "commander": "2.11.0",
564 | "debug": "3.1.0",
565 | "diff": "3.3.1",
566 | "escape-string-regexp": "1.0.5",
567 | "glob": "7.1.2",
568 | "growl": "1.10.3",
569 | "he": "1.1.1",
570 | "mkdirp": "0.5.1",
571 | "supports-color": "4.4.0"
572 | },
573 | "dependencies": {
574 | "commander": {
575 | "version": "2.11.0",
576 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
577 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
578 | "dev": true
579 | },
580 | "diff": {
581 | "version": "3.3.1",
582 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
583 | "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
584 | "dev": true
585 | },
586 | "glob": {
587 | "version": "7.1.2",
588 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
589 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
590 | "dev": true,
591 | "requires": {
592 | "fs.realpath": "^1.0.0",
593 | "inflight": "^1.0.4",
594 | "inherits": "2",
595 | "minimatch": "^3.0.4",
596 | "once": "^1.3.0",
597 | "path-is-absolute": "^1.0.0"
598 | }
599 | },
600 | "has-flag": {
601 | "version": "2.0.0",
602 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
603 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
604 | "dev": true
605 | },
606 | "supports-color": {
607 | "version": "4.4.0",
608 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
609 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
610 | "dev": true,
611 | "requires": {
612 | "has-flag": "^2.0.0"
613 | }
614 | }
615 | }
616 | },
617 | "monocle-ts": {
618 | "version": "1.7.2",
619 | "resolved": "https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.7.2.tgz",
620 | "integrity": "sha512-F08hPUzQ14vOtac2vOagnvXPr0R0MRKWXF6Bwd3gQ4XnV2qfU0MzPL+L18kX4dXBkat74pxbL88V1BjAj3YOWg=="
621 | },
622 | "ms": {
623 | "version": "2.0.0",
624 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
625 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
626 | "dev": true
627 | },
628 | "oauth-sign": {
629 | "version": "0.9.0",
630 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
631 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
632 | "dev": true
633 | },
634 | "once": {
635 | "version": "1.4.0",
636 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
637 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
638 | "dev": true,
639 | "requires": {
640 | "wrappy": "1"
641 | }
642 | },
643 | "parser-ts": {
644 | "version": "0.5.1",
645 | "resolved": "https://registry.npmjs.org/parser-ts/-/parser-ts-0.5.1.tgz",
646 | "integrity": "sha512-PAUoJeOch9xiNZOv2BTCvDkzx10fYzzxnTe7AlrdZz3xAObSsTGPWbRLkbdGU+EBun+ANoLKHD9AombBPVxYTA==",
647 | "requires": {
648 | "fp-ts": "^1.13.0"
649 | }
650 | },
651 | "path-is-absolute": {
652 | "version": "1.0.1",
653 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
654 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
655 | "dev": true
656 | },
657 | "path-parse": {
658 | "version": "1.0.6",
659 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
660 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
661 | "dev": true
662 | },
663 | "performance-now": {
664 | "version": "2.1.0",
665 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
666 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
667 | "dev": true
668 | },
669 | "psl": {
670 | "version": "1.1.31",
671 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
672 | "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
673 | "dev": true
674 | },
675 | "punycode": {
676 | "version": "2.1.1",
677 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
678 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
679 | "dev": true
680 | },
681 | "qs": {
682 | "version": "6.5.2",
683 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
684 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
685 | "dev": true
686 | },
687 | "querystringify": {
688 | "version": "2.1.1",
689 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
690 | "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
691 | "dev": true
692 | },
693 | "request": {
694 | "version": "2.88.0",
695 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
696 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
697 | "dev": true,
698 | "requires": {
699 | "aws-sign2": "~0.7.0",
700 | "aws4": "^1.8.0",
701 | "caseless": "~0.12.0",
702 | "combined-stream": "~1.0.6",
703 | "extend": "~3.0.2",
704 | "forever-agent": "~0.6.1",
705 | "form-data": "~2.3.2",
706 | "har-validator": "~5.1.0",
707 | "http-signature": "~1.2.0",
708 | "is-typedarray": "~1.0.0",
709 | "isstream": "~0.1.2",
710 | "json-stringify-safe": "~5.0.1",
711 | "mime-types": "~2.1.19",
712 | "oauth-sign": "~0.9.0",
713 | "performance-now": "^2.1.0",
714 | "qs": "~6.5.2",
715 | "safe-buffer": "^5.1.2",
716 | "tough-cookie": "~2.4.3",
717 | "tunnel-agent": "^0.6.0",
718 | "uuid": "^3.3.2"
719 | }
720 | },
721 | "requires-port": {
722 | "version": "1.0.0",
723 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
724 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
725 | "dev": true
726 | },
727 | "resolve": {
728 | "version": "1.11.0",
729 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
730 | "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
731 | "dev": true,
732 | "requires": {
733 | "path-parse": "^1.0.6"
734 | }
735 | },
736 | "safe-buffer": {
737 | "version": "5.1.2",
738 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
739 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
740 | "dev": true
741 | },
742 | "safer-buffer": {
743 | "version": "2.1.2",
744 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
745 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
746 | "dev": true
747 | },
748 | "semver": {
749 | "version": "5.7.0",
750 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
751 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
752 | "dev": true
753 | },
754 | "source-map": {
755 | "version": "0.6.1",
756 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
757 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
758 | "dev": true
759 | },
760 | "source-map-support": {
761 | "version": "0.5.12",
762 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
763 | "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
764 | "dev": true,
765 | "requires": {
766 | "buffer-from": "^1.0.0",
767 | "source-map": "^0.6.0"
768 | }
769 | },
770 | "sprintf-js": {
771 | "version": "1.0.3",
772 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
773 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
774 | "dev": true
775 | },
776 | "sshpk": {
777 | "version": "1.16.1",
778 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
779 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
780 | "dev": true,
781 | "requires": {
782 | "asn1": "~0.2.3",
783 | "assert-plus": "^1.0.0",
784 | "bcrypt-pbkdf": "^1.0.0",
785 | "dashdash": "^1.12.0",
786 | "ecc-jsbn": "~0.1.1",
787 | "getpass": "^0.1.1",
788 | "jsbn": "~0.1.0",
789 | "safer-buffer": "^2.0.2",
790 | "tweetnacl": "~0.14.0"
791 | }
792 | },
793 | "supports-color": {
794 | "version": "5.5.0",
795 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
796 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
797 | "dev": true,
798 | "requires": {
799 | "has-flag": "^3.0.0"
800 | }
801 | },
802 | "tough-cookie": {
803 | "version": "2.4.3",
804 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
805 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
806 | "dev": true,
807 | "requires": {
808 | "psl": "^1.1.24",
809 | "punycode": "^1.4.1"
810 | },
811 | "dependencies": {
812 | "punycode": {
813 | "version": "1.4.1",
814 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
815 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
816 | "dev": true
817 | }
818 | }
819 | },
820 | "tslib": {
821 | "version": "1.9.3",
822 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
823 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
824 | "dev": true
825 | },
826 | "tslint": {
827 | "version": "5.16.0",
828 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz",
829 | "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==",
830 | "dev": true,
831 | "requires": {
832 | "@babel/code-frame": "^7.0.0",
833 | "builtin-modules": "^1.1.1",
834 | "chalk": "^2.3.0",
835 | "commander": "^2.12.1",
836 | "diff": "^3.2.0",
837 | "glob": "^7.1.1",
838 | "js-yaml": "^3.13.0",
839 | "minimatch": "^3.0.4",
840 | "mkdirp": "^0.5.1",
841 | "resolve": "^1.3.2",
842 | "semver": "^5.3.0",
843 | "tslib": "^1.8.0",
844 | "tsutils": "^2.29.0"
845 | }
846 | },
847 | "tsutils": {
848 | "version": "2.29.0",
849 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
850 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
851 | "dev": true,
852 | "requires": {
853 | "tslib": "^1.8.1"
854 | }
855 | },
856 | "tunnel-agent": {
857 | "version": "0.6.0",
858 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
859 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
860 | "dev": true,
861 | "requires": {
862 | "safe-buffer": "^5.0.1"
863 | }
864 | },
865 | "tweetnacl": {
866 | "version": "0.14.5",
867 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
868 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
869 | "dev": true
870 | },
871 | "typescript": {
872 | "version": "3.4.5",
873 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
874 | "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
875 | },
876 | "uri-js": {
877 | "version": "4.2.2",
878 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
879 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
880 | "dev": true,
881 | "requires": {
882 | "punycode": "^2.1.0"
883 | }
884 | },
885 | "url-parse": {
886 | "version": "1.4.7",
887 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
888 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
889 | "dev": true,
890 | "requires": {
891 | "querystringify": "^2.1.1",
892 | "requires-port": "^1.0.0"
893 | }
894 | },
895 | "uuid": {
896 | "version": "3.3.2",
897 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
898 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
899 | "dev": true
900 | },
901 | "verror": {
902 | "version": "1.10.0",
903 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
904 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
905 | "dev": true,
906 | "requires": {
907 | "assert-plus": "^1.0.0",
908 | "core-util-is": "1.0.2",
909 | "extsprintf": "^1.2.0"
910 | }
911 | },
912 | "vscode": {
913 | "version": "1.1.34",
914 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.34.tgz",
915 | "integrity": "sha512-GuT3tCT2N5Qp26VG4C+iGmWMgg/MuqtY5G5TSOT3U/X6pgjM9LFulJEeqpyf6gdzpI4VyU3ZN/lWPo54UFPuQg==",
916 | "dev": true,
917 | "requires": {
918 | "glob": "^7.1.2",
919 | "mocha": "^4.0.1",
920 | "request": "^2.88.0",
921 | "semver": "^5.4.1",
922 | "source-map-support": "^0.5.0",
923 | "url-parse": "^1.4.4",
924 | "vscode-test": "^0.4.1"
925 | }
926 | },
927 | "vscode-test": {
928 | "version": "0.4.1",
929 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.1.tgz",
930 | "integrity": "sha512-uIi/07uG/gmCbD9Y9bFpNzmk4el82xiclijEdL426A3jOFfvwdqgfmtuWYfxEGo0w6JY9EqVDTGQCXwuInXVTQ==",
931 | "dev": true,
932 | "requires": {
933 | "http-proxy-agent": "^2.1.0",
934 | "https-proxy-agent": "^2.2.1"
935 | }
936 | },
937 | "wrappy": {
938 | "version": "1.0.2",
939 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
940 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
941 | "dev": true
942 | }
943 | }
944 | }
945 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vscode-fp-ts-codegen",
3 | "displayName": "fp-ts Code Generator",
4 | "description": "Transform selection using gcanti/fp-ts-codegen",
5 | "icon": "images/logo.png",
6 | "version": "1.0.0",
7 | "publisher": "betafcc",
8 | "author": "Beta Faccion (https://github.com/betafcc)",
9 | "license": "MIT",
10 | "repository": {
11 | "type": "git",
12 | "url": "https://github.com/betafcc/vscode-fp-ts-codegen.git"
13 | },
14 | "bugs": {
15 | "url": "https://github.com/betafcc/vscode-fp-ts-codegen/issues"
16 | },
17 | "engines": {
18 | "vscode": "^1.19.0"
19 | },
20 | "categories": [
21 | "Other"
22 | ],
23 | "activationEvents": [
24 | "onCommand:fp-ts-codegen.expandSelection"
25 | ],
26 | "main": "./out/extension.js",
27 | "contributes": {
28 | "commands": [
29 | {
30 | "command": "fp-ts-codegen.expandSelection",
31 | "title": "fp-ts-codegen: Expand Selection"
32 | }
33 | ],
34 | "configuration": [
35 | {
36 | "type": "object",
37 | "title": "fp-ts Code Generator Configuration",
38 | "properties": {
39 | "fp-ts-codegen.tagName": {
40 | "description": "the name of the field used as tag",
41 | "type": "string",
42 | "default": "type"
43 | },
44 | "fp-ts-codegen.foldName": {
45 | "description": "the name prefix used for pattern matching functions",
46 | "type": "string",
47 | "default": "fold"
48 | },
49 | "fp-ts-codegen.matcheeName": {
50 | "description": "the name used for the input of pattern matching functions",
51 | "type": "string",
52 | "default": "fa"
53 | },
54 | "fp-ts-codegen.handlersStyle": {
55 | "description": "the pattern matching handlers can be expressed as positional arguments or a single object literal `tag -> handler`",
56 | "enum": [
57 | "positional",
58 | "record"
59 | ],
60 | "type": "string",
61 | "default": "positional"
62 | },
63 | "fp-ts-codegen.handlersName": {
64 | "description": "the name used for the handler if handlersStyle is \"record\"",
65 | "type": "string",
66 | "default": "handlers"
67 | },
68 | "fp-ts-codegen.encoding": {
69 | "description": "the encoding to generate the types, either `literal` for pure TS or `fp-ts`, to use fp-ts constructs",
70 | "enum": [
71 | "fp-ts",
72 | "literal"
73 | ],
74 | "type": "string",
75 | "default": "literal"
76 | }
77 | }
78 | }
79 | ]
80 | },
81 | "scripts": {
82 | "vscode:prepublish": "npm run compile",
83 | "compile": "tsc -p ./",
84 | "watch": "tsc -watch -p ./",
85 | "postinstall": "node ./node_modules/vscode/bin/install",
86 | "test": "npm run compile && node ./node_modules/vscode/bin/test"
87 | },
88 | "devDependencies": {
89 | "typescript": "^3.3.1",
90 | "vscode": "^1.1.28",
91 | "tslint": "^5.12.1",
92 | "@types/node": "^10.12.21",
93 | "@types/mocha": "^2.2.42"
94 | },
95 | "dependencies": {
96 | "fp-ts-codegen": "^0.3.0"
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/extension.ts:
--------------------------------------------------------------------------------
1 | // The module 'vscode' contains the VS Code extensibility API
2 | // Import the module and reference it with the alias vscode in your code below
3 | import * as vscode from 'vscode';
4 | import { run } from 'fp-ts-codegen';
5 | import { Options } from 'fp-ts-codegen/lib/ast';
6 |
7 | export function activate(context: vscode.ExtensionContext) {
8 | console.log('Congratulations, your extension "vscode-fp-ts-codegen" is now active!');
9 |
10 | context.subscriptions.push(
11 | vscode.commands.registerCommand('fp-ts-codegen.expandSelection', expandSelection)
12 | );
13 | }
14 |
15 | export function deactivate() {}
16 |
17 | const expandSelection = () => {
18 | const editor = vscode.window.activeTextEditor;
19 |
20 | if (!editor) {
21 | warn('No Active TextEditor');
22 | } else {
23 | const selection = editor.selection;
24 | if (selection.isEmpty) {
25 | warn('No selection to Expand');
26 | } else {
27 | run(
28 | editor.document.getText(selection),
29 | toOptions((vscode.workspace.getConfiguration(
30 | 'fp-ts-codegen'
31 | ) as unknown) as ExtensionOptions)
32 | ).fold(warn, insertSnippet(editor, selection));
33 | }
34 | }
35 | };
36 |
37 | interface ExtensionOptions {
38 | encoding: 'fp-ts' | 'literal';
39 | foldName: string;
40 | handlersName: string;
41 | handlersStyle: 'positional' | 'record';
42 | matcheeName: string;
43 | tagName: string;
44 | }
45 |
46 | const toOptions = ({
47 | handlersName,
48 | handlersStyle,
49 | ...rest
50 | }: ExtensionOptions): Options => ({
51 | ...rest,
52 | handlersStyle:
53 | handlersStyle === 'positional'
54 | ? { type: 'positional' }
55 | : { type: 'record', handlersName }
56 | });
57 | const warn = (msg: string) => {
58 | vscode.window.showWarningMessage(msg);
59 | };
60 |
61 | const insertSnippet = (editor: vscode.TextEditor, selection: vscode.Selection) => (
62 | snippet: string
63 | ) => {
64 | editor.insertSnippet(new vscode.SnippetString(snippet), selection);
65 | };
66 |
--------------------------------------------------------------------------------
/src/test/extension.test.ts:
--------------------------------------------------------------------------------
1 | //
2 | // Note: This example test is leveraging the Mocha test framework.
3 | // Please refer to their documentation on https://mochajs.org/ for help.
4 | //
5 |
6 | // The module 'assert' provides assertion methods from node
7 | import * as assert from 'assert';
8 |
9 | // You can import and use all API from the 'vscode' module
10 | // as well as import your extension to test it
11 | // import * as vscode from 'vscode';
12 | // import * as myExtension from '../extension';
13 |
14 | // Defines a Mocha test suite to group tests of similar kind together
15 | suite("Extension Tests", function () {
16 |
17 | // Defines a Mocha unit test
18 | test("Something 1", function() {
19 | assert.equal(-1, [1, 2, 3].indexOf(5));
20 | assert.equal(-1, [1, 2, 3].indexOf(0));
21 | });
22 | });
--------------------------------------------------------------------------------
/src/test/index.ts:
--------------------------------------------------------------------------------
1 | //
2 | // PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING
3 | //
4 | // This file is providing the test runner to use when running extension tests.
5 | // By default the test runner in use is Mocha based.
6 | //
7 | // You can provide your own test runner if you want to override it by exporting
8 | // a function run(testsRoot: string, clb: (error: Error, failures?: number) => void): void
9 | // that the extension host can call to run the tests. The test runner is expected to use console.log
10 | // to report the results back to the caller. When the tests are finished, return
11 | // a possible error to the callback or null if none.
12 |
13 | import * as testRunner from 'vscode/lib/testrunner';
14 |
15 | // You can directly control Mocha options by configuring the test runner below
16 | // See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options
17 | // for more info
18 | testRunner.configure({
19 | ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.)
20 | useColors: true // colored output from test results
21 | });
22 |
23 | module.exports = testRunner;
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "outDir": "out",
6 | "lib": [
7 | "es6"
8 | ],
9 | "sourceMap": true,
10 | "rootDir": "src",
11 | "strict": true /* enable all strict type-checking options */
12 | /* Additional Checks */
13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
16 | },
17 | "exclude": [
18 | "node_modules",
19 | ".vscode-test"
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "no-string-throw": true,
4 | "no-unused-expression": true,
5 | "no-duplicate-variable": true,
6 | "curly": true,
7 | "class-name": true,
8 | "semicolon": [
9 | true,
10 | "always"
11 | ],
12 | "triple-equals": true
13 | },
14 | "defaultSeverity": "warning"
15 | }
16 |
--------------------------------------------------------------------------------