language_server 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/Dockerfile +13 -0
  5. data/Dockerfile.production +5 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +41 -0
  9. data/Rakefile +10 -0
  10. data/bin/console +11 -0
  11. data/bin/generate_files +3 -0
  12. data/bin/setup +8 -0
  13. data/docker-compose.yml +20 -0
  14. data/exe/language_server +8 -0
  15. data/language_server.gemspec +28 -0
  16. data/lib/language_server/protocol/constants/completion_item_kind.rb +29 -0
  17. data/lib/language_server/protocol/constants/diagnostic_severity.rb +24 -0
  18. data/lib/language_server/protocol/constants/document_highlight_kind.rb +23 -0
  19. data/lib/language_server/protocol/constants/error_codes.rb +18 -0
  20. data/lib/language_server/protocol/constants/file_change_type.rb +23 -0
  21. data/lib/language_server/protocol/constants/initialize_error.rb +15 -0
  22. data/lib/language_server/protocol/constants/insert_text_format.rb +27 -0
  23. data/lib/language_server/protocol/constants/message_type.rb +24 -0
  24. data/lib/language_server/protocol/constants/symbol_kind.rb +29 -0
  25. data/lib/language_server/protocol/constants/text_document_save_reason.rb +24 -0
  26. data/lib/language_server/protocol/constants/text_document_sync_kind.rb +26 -0
  27. data/lib/language_server/protocol/constants.rb +11 -0
  28. data/lib/language_server/protocol/interfaces/apply_workspace_edit_params.rb +29 -0
  29. data/lib/language_server/protocol/interfaces/apply_workspace_edit_response.rb +29 -0
  30. data/lib/language_server/protocol/interfaces/cancel_params.rb +29 -0
  31. data/lib/language_server/protocol/interfaces/client_capabilities.rb +47 -0
  32. data/lib/language_server/protocol/interfaces/code_action_context.rb +33 -0
  33. data/lib/language_server/protocol/interfaces/code_action_params.rb +50 -0
  34. data/lib/language_server/protocol/interfaces/code_lens.rb +55 -0
  35. data/lib/language_server/protocol/interfaces/code_lens_options.rb +32 -0
  36. data/lib/language_server/protocol/interfaces/code_lens_params.rb +29 -0
  37. data/lib/language_server/protocol/interfaces/code_lens_registration_options.rb +29 -0
  38. data/lib/language_server/protocol/interfaces/command.rb +48 -0
  39. data/lib/language_server/protocol/interfaces/completion_item.rb +145 -0
  40. data/lib/language_server/protocol/interfaces/completion_list.rb +43 -0
  41. data/lib/language_server/protocol/interfaces/completion_options.rb +42 -0
  42. data/lib/language_server/protocol/interfaces/completion_registration_options.rb +39 -0
  43. data/lib/language_server/protocol/interfaces/diagnostic.rb +67 -0
  44. data/lib/language_server/protocol/interfaces/did_change_configuration_params.rb +29 -0
  45. data/lib/language_server/protocol/interfaces/did_change_text_document_params.rb +40 -0
  46. data/lib/language_server/protocol/interfaces/did_change_watched_files_params.rb +29 -0
  47. data/lib/language_server/protocol/interfaces/did_close_text_document_params.rb +29 -0
  48. data/lib/language_server/protocol/interfaces/did_open_text_document_params.rb +29 -0
  49. data/lib/language_server/protocol/interfaces/did_save_text_document_params.rb +39 -0
  50. data/lib/language_server/protocol/interfaces/document_filter.rb +47 -0
  51. data/lib/language_server/protocol/interfaces/document_formatting_params.rb +38 -0
  52. data/lib/language_server/protocol/interfaces/document_highlight.rb +43 -0
  53. data/lib/language_server/protocol/interfaces/document_link.rb +42 -0
  54. data/lib/language_server/protocol/interfaces/document_link_options.rb +32 -0
  55. data/lib/language_server/protocol/interfaces/document_link_params.rb +29 -0
  56. data/lib/language_server/protocol/interfaces/document_link_registration_options.rb +29 -0
  57. data/lib/language_server/protocol/interfaces/document_on_type_formatting_options.rb +41 -0
  58. data/lib/language_server/protocol/interfaces/document_on_type_formatting_params.rb +56 -0
  59. data/lib/language_server/protocol/interfaces/document_on_type_formatting_registration_options.rb +38 -0
  60. data/lib/language_server/protocol/interfaces/document_range_formatting_params.rb +47 -0
  61. data/lib/language_server/protocol/interfaces/document_symbol_params.rb +29 -0
  62. data/lib/language_server/protocol/interfaces/execute_command_options.rb +32 -0
  63. data/lib/language_server/protocol/interfaces/execute_command_params.rb +38 -0
  64. data/lib/language_server/protocol/interfaces/execute_command_registration_options.rb +32 -0
  65. data/lib/language_server/protocol/interfaces/file_event.rb +41 -0
  66. data/lib/language_server/protocol/interfaces/formatting_options.rb +41 -0
  67. data/lib/language_server/protocol/interfaces/hover.rb +42 -0
  68. data/lib/language_server/protocol/interfaces/initialize_error.rb +35 -0
  69. data/lib/language_server/protocol/interfaces/initialize_params.rb +79 -0
  70. data/lib/language_server/protocol/interfaces/initialize_result.rb +29 -0
  71. data/lib/language_server/protocol/interfaces/location.rb +32 -0
  72. data/lib/language_server/protocol/interfaces/log_message_params.rb +38 -0
  73. data/lib/language_server/protocol/interfaces/message.rb +26 -0
  74. data/lib/language_server/protocol/interfaces/message_action_item.rb +29 -0
  75. data/lib/language_server/protocol/interfaces/notification_message.rb +38 -0
  76. data/lib/language_server/protocol/interfaces/parameter_information.rb +44 -0
  77. data/lib/language_server/protocol/interfaces/position.rb +38 -0
  78. data/lib/language_server/protocol/interfaces/publish_diagnostics_params.rb +38 -0
  79. data/lib/language_server/protocol/interfaces/range.rb +38 -0
  80. data/lib/language_server/protocol/interfaces/reference_context.rb +29 -0
  81. data/lib/language_server/protocol/interfaces/reference_params.rb +26 -0
  82. data/lib/language_server/protocol/interfaces/registration.rb +51 -0
  83. data/lib/language_server/protocol/interfaces/registration_params.rb +26 -0
  84. data/lib/language_server/protocol/interfaces/rename_params.rb +49 -0
  85. data/lib/language_server/protocol/interfaces/request_message.rb +47 -0
  86. data/lib/language_server/protocol/interfaces/response_error.rb +48 -0
  87. data/lib/language_server/protocol/interfaces/response_message.rb +48 -0
  88. data/lib/language_server/protocol/interfaces/save_options.rb +32 -0
  89. data/lib/language_server/protocol/interfaces/server_capabilities.rb +183 -0
  90. data/lib/language_server/protocol/interfaces/show_message_params.rb +38 -0
  91. data/lib/language_server/protocol/interfaces/show_message_request_params.rb +47 -0
  92. data/lib/language_server/protocol/interfaces/signature_help.rb +64 -0
  93. data/lib/language_server/protocol/interfaces/signature_help_options.rb +33 -0
  94. data/lib/language_server/protocol/interfaces/signature_help_registration_options.rb +30 -0
  95. data/lib/language_server/protocol/interfaces/signature_information.rb +54 -0
  96. data/lib/language_server/protocol/interfaces/symbol_information.rb +60 -0
  97. data/lib/language_server/protocol/interfaces/text_document_change_registration_options.rb +33 -0
  98. data/lib/language_server/protocol/interfaces/text_document_client_capabilities.rb +155 -0
  99. data/lib/language_server/protocol/interfaces/text_document_content_change_event.rb +51 -0
  100. data/lib/language_server/protocol/interfaces/text_document_edit.rb +38 -0
  101. data/lib/language_server/protocol/interfaces/text_document_identifier.rb +29 -0
  102. data/lib/language_server/protocol/interfaces/text_document_item.rb +57 -0
  103. data/lib/language_server/protocol/interfaces/text_document_position_params.rb +38 -0
  104. data/lib/language_server/protocol/interfaces/text_document_registration_options.rb +30 -0
  105. data/lib/language_server/protocol/interfaces/text_document_save_registration_options.rb +29 -0
  106. data/lib/language_server/protocol/interfaces/text_document_sync_options.rb +66 -0
  107. data/lib/language_server/protocol/interfaces/text_edit.rb +40 -0
  108. data/lib/language_server/protocol/interfaces/unregistration.rb +42 -0
  109. data/lib/language_server/protocol/interfaces/unregistration_params.rb +26 -0
  110. data/lib/language_server/protocol/interfaces/versioned_text_document_identifier.rb +29 -0
  111. data/lib/language_server/protocol/interfaces/will_save_text_document_params.rb +41 -0
  112. data/lib/language_server/protocol/interfaces/workspace_client_capabilites.rb +78 -0
  113. data/lib/language_server/protocol/interfaces/workspace_edit.rb +40 -0
  114. data/lib/language_server/protocol/interfaces/workspace_symbol_params.rb +32 -0
  115. data/lib/language_server/protocol/interfaces.rb +87 -0
  116. data/lib/language_server/version.rb +3 -0
  117. data/lib/language_server.rb +176 -0
  118. data/package.json +10 -0
  119. data/scripts/generateFiles.ts +224 -0
  120. data/yarn.lock +295 -0
  121. metadata +220 -0
@@ -0,0 +1,224 @@
1
+ import * as ts from 'typescript';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as fetch from 'isomorphic-fetch';
5
+
6
+ const lspVersion = 'a0d9d12fa6d4c313d3ed70bd842f0a2c8e66e29e';
7
+ const rootDir = path.normalize(path.join(__dirname, ".."));
8
+ const tempDir = path.join(rootDir, "tmp");
9
+ const protocolMdPath = path.join(tempDir, lspVersion, "protocol.md");
10
+
11
+ const createFile = (filePath, content) => {
12
+ const dir = path.dirname(path.normalize(filePath));
13
+
14
+ dir.split(/(?!^)\//).forEach((_, index, all) => {
15
+ const dir = all.slice(0, index + 1).join("/");
16
+
17
+ if (!fs.existsSync(dir)) {
18
+ fs.mkdirSync(dir);
19
+ }
20
+ });
21
+
22
+ fs.writeFileSync(filePath, content);
23
+ }
24
+
25
+ const extractTypeScriptSource = content => {
26
+ const regEx = /^```typescript\n([^]*?)^```\n/mg;
27
+ let match;
28
+ let result = "";
29
+
30
+ while((match = regEx.exec(content)) !== null) {
31
+ result = result.concat(match[1]);
32
+ }
33
+
34
+ return result;
35
+ }
36
+
37
+ const extractDefinitions = content => {
38
+ const fileName = path.join(tempDir, "protocol.ts");
39
+ createFile(fileName, content);
40
+ const program = ts.createProgram([fileName], {});
41
+ const checker = program.getTypeChecker();
42
+
43
+ const output = [];
44
+
45
+ const serialize = member => {
46
+ const symbol = checker.getSymbolAtLocation(member.name);
47
+ const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
48
+ const types = member.kind == ts.SyntaxKind.UnionType ? (<ts.UnionTypeNode>(<ts.PropertySignature>member).type).types : [];
49
+
50
+ return {
51
+ name: symbol.getName(),
52
+ documentation: ts.displayPartsToString(symbol.getDocumentationComment()),
53
+ type: checker.typeToString(type),
54
+ optional: !!member.questionToken,
55
+ nullable: (<ts.NodeArray<ts.TypeNode>>types).some(t => t.kind == ts.SyntaxKind.NullKeyword),
56
+ value: symbol.valueDeclaration ? symbol.valueDeclaration.getChildAt(symbol.valueDeclaration.getChildCount() - 1).getText() : null
57
+ };
58
+ }
59
+
60
+ const handleInterface = (node: ts.InterfaceDeclaration) => {
61
+ const members = node.members.filter(member => member.name).map(member => serialize(member));
62
+
63
+ output.push(
64
+ {
65
+ interface: serialize(node),
66
+ members
67
+ }
68
+ );
69
+ }
70
+
71
+ const handleModule = (node: ts.ModuleDeclaration) => {
72
+ const members = []
73
+
74
+ ts.forEachChild(node.body, node => {
75
+ members.push(serialize((<ts.VariableStatement>node).declarationList.declarations[0]));
76
+ });
77
+
78
+ output.push(
79
+ {
80
+ module: serialize(node),
81
+ members
82
+ }
83
+ );
84
+ }
85
+
86
+ const visit = node => {
87
+ switch(node.kind) {
88
+ case(ts.SyntaxKind.InterfaceDeclaration):
89
+ handleInterface(node);
90
+ break;
91
+
92
+ case(ts.SyntaxKind.ModuleDeclaration):
93
+ handleModule(node);
94
+ break;
95
+ }
96
+ };
97
+
98
+ ts.forEachChild(program.getSourceFile(fileName), visit);
99
+
100
+ return output;
101
+ }
102
+
103
+ import Handlebars from "handlebars";
104
+ const snake = s => s.replace(/^[A-Z]/, s => s.toLowerCase()).replace(/[A-Z]/g, s => `_${s.toLowerCase()}`);
105
+
106
+ Handlebars.registerHelper("params", members => {
107
+ return members.map(member => `${snake(member.name)}:${(member.optional || member.nullable) ? " nil" : ""}`).join(", ");
108
+ });
109
+ Handlebars.registerHelper("snake", snake);
110
+ Handlebars.registerHelper("comment", (s, options) => {
111
+ const indent = Array(options.hash.indent + 1).join(" ");
112
+ return s.split("\n").map(s => s.trim()).map(s => `${indent}#${s.length == 0 ? "" : ` ${s}`}`).join("\n");
113
+ });
114
+ Handlebars.registerHelper("local_var", s => {
115
+ const rubyKeywords = ["end", "retry"]
116
+ const snaked = snake(s);
117
+
118
+ if (rubyKeywords.some(k => k == s)) {
119
+ return `binding.local_variable_get(:${snaked})`;
120
+ } else {
121
+ return snake(s);
122
+ }
123
+ });
124
+ Handlebars.registerHelper("const", s => {
125
+ return snake(s).toUpperCase();
126
+ });
127
+
128
+ (async () => {
129
+ if (!fs.existsSync(protocolMdPath)) {
130
+ const res = await fetch(`https://github.com/Microsoft/language-server-protocol/raw/${lspVersion}/protocol.md`);
131
+ createFile(protocolMdPath, await res.text());
132
+ }
133
+
134
+ const md = fs.readFileSync(protocolMdPath).toString();
135
+ const typeScriptSource = extractTypeScriptSource(md);
136
+
137
+ const definitions = extractDefinitions(typeScriptSource);
138
+ const interfaces = definitions.filter(d => d.interface);
139
+ const modules = definitions.filter(d => d.module);
140
+
141
+ interfaces.forEach(definition => {
142
+ createFile(path.join(rootDir, "lib", "language_server", "protocol", "interfaces", `${snake(definition.interface.name)}.rb`), Handlebars.compile(`
143
+ module LanguageServer
144
+ module Protocol
145
+ module Interfaces
146
+ {{#if definition.interface.documentation}}
147
+ #
148
+ {{comment definition.interface.documentation indent=6}}
149
+ #
150
+ {{/if}}
151
+ class {{definition.interface.name}}
152
+ def initialize({{params definition.members}})
153
+ @attributes = {}
154
+
155
+ {{#each definition.members}}
156
+ @attributes[:{{name}}] = {{local_var name}}{{#if optional}} if {{local_var name}}{{/if}}
157
+ {{/each}}
158
+
159
+ @attributes.freeze
160
+ end
161
+ {{#each definition.members}}
162
+
163
+ {{#if documentation}}
164
+ #
165
+ {{comment documentation indent=8}}
166
+ #
167
+ {{/if}}
168
+ # @return [{{type}}{{#if nullable}}, nil{{/if}}]
169
+ def {{snake name}}
170
+ attributes.fetch(:{{name}})
171
+ end
172
+ {{/each}}
173
+
174
+ attr_reader :attributes
175
+
176
+ def to_json(*args)
177
+ attributes.to_json(*args)
178
+ end
179
+ end
180
+ end
181
+ end
182
+ end
183
+ `.slice(1), {noEscape: true})({definition}));
184
+ });
185
+
186
+ modules.forEach(definition => {
187
+ createFile(path.join(rootDir, "lib", "language_server", "protocol", "constants", `${snake(definition.module.name)}.rb`), Handlebars.compile(`
188
+ module LanguageServer
189
+ module Protocol
190
+ module Constants
191
+ {{#if definition.module.documentation}}
192
+ #
193
+ {{comment definition.module.documentation indent=6}}
194
+ #
195
+ {{/if}}
196
+ module {{definition.module.name}}
197
+ {{#each definition.members}}
198
+ {{#if documentation}}
199
+ #
200
+ {{comment documentation indent=8}}
201
+ #
202
+ {{/if}}
203
+ {{const name}} = {{value}}
204
+ {{/each}}
205
+ end
206
+ end
207
+ end
208
+ end
209
+ `.slice(1), {noEscape: true})({definition}));
210
+ });
211
+
212
+ createFile(path.join(rootDir, "lib", "language_server", "protocol", "interfaces.rb"), Handlebars.compile(`
213
+ {{#each interfaces}}
214
+ require "language_server/protocol/interfaces/{{snake interface.name}}"
215
+ {{/each}}
216
+ `.slice(1), {noEscape: true})({interfaces}));
217
+
218
+ createFile(path.join(rootDir, "lib", "language_server", "protocol", "constants.rb"), Handlebars.compile(`
219
+ {{#each modules}}
220
+ require "language_server/protocol/constants/{{snake module.name}}"
221
+ {{/each}}
222
+ `.slice(1), {noEscape: true})({modules}));
223
+
224
+ })();
data/yarn.lock ADDED
@@ -0,0 +1,295 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@types/es6-promise@^0.0.32":
6
+ version "0.0.32"
7
+ resolved "https://registry.yarnpkg.com/@types/es6-promise/-/es6-promise-0.0.32.tgz#3bcf44fb1e429f3df76188c8c6d874463ba371fd"
8
+
9
+ "@types/node@^7.0.18":
10
+ version "7.0.18"
11
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173"
12
+
13
+ align-text@^0.1.1, align-text@^0.1.3:
14
+ version "0.1.4"
15
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
16
+ dependencies:
17
+ kind-of "^3.0.2"
18
+ longest "^1.0.1"
19
+ repeat-string "^1.5.2"
20
+
21
+ amdefine@>=0.0.4:
22
+ version "1.0.1"
23
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
24
+
25
+ ansi-regex@^2.0.0:
26
+ version "2.1.1"
27
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
28
+
29
+ ansi-styles@^2.2.1:
30
+ version "2.2.1"
31
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
32
+
33
+ arrify@^1.0.0:
34
+ version "1.0.1"
35
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
36
+
37
+ async@^1.4.0:
38
+ version "1.5.2"
39
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
40
+
41
+ camelcase@^1.0.2:
42
+ version "1.2.1"
43
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
44
+
45
+ center-align@^0.1.1:
46
+ version "0.1.3"
47
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
48
+ dependencies:
49
+ align-text "^0.1.3"
50
+ lazy-cache "^1.0.3"
51
+
52
+ chalk@^1.1.1:
53
+ version "1.1.3"
54
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
55
+ dependencies:
56
+ ansi-styles "^2.2.1"
57
+ escape-string-regexp "^1.0.2"
58
+ has-ansi "^2.0.0"
59
+ strip-ansi "^3.0.0"
60
+ supports-color "^2.0.0"
61
+
62
+ cliui@^2.1.0:
63
+ version "2.1.0"
64
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
65
+ dependencies:
66
+ center-align "^0.1.1"
67
+ right-align "^0.1.1"
68
+ wordwrap "0.0.2"
69
+
70
+ decamelize@^1.0.0:
71
+ version "1.2.0"
72
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
73
+
74
+ diff@^3.1.0:
75
+ version "3.2.0"
76
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
77
+
78
+ encoding@^0.1.11:
79
+ version "0.1.12"
80
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
81
+ dependencies:
82
+ iconv-lite "~0.4.13"
83
+
84
+ escape-string-regexp@^1.0.2:
85
+ version "1.0.5"
86
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
87
+
88
+ handlebars@^4.0.8:
89
+ version "4.0.8"
90
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.8.tgz#22b875cd3f0e6cbea30314f144e82bc7a72ff420"
91
+ dependencies:
92
+ async "^1.4.0"
93
+ optimist "^0.6.1"
94
+ source-map "^0.4.4"
95
+ optionalDependencies:
96
+ uglify-js "^2.6"
97
+
98
+ has-ansi@^2.0.0:
99
+ version "2.0.0"
100
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
101
+ dependencies:
102
+ ansi-regex "^2.0.0"
103
+
104
+ iconv-lite@~0.4.13:
105
+ version "0.4.17"
106
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.17.tgz#4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d"
107
+
108
+ is-buffer@^1.1.5:
109
+ version "1.1.5"
110
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
111
+
112
+ is-stream@^1.0.1:
113
+ version "1.1.0"
114
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
115
+
116
+ isomorphic-fetch@^2.2.1:
117
+ version "2.2.1"
118
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
119
+ dependencies:
120
+ node-fetch "^1.0.1"
121
+ whatwg-fetch ">=0.10.0"
122
+
123
+ kind-of@^3.0.2:
124
+ version "3.2.0"
125
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07"
126
+ dependencies:
127
+ is-buffer "^1.1.5"
128
+
129
+ lazy-cache@^1.0.3:
130
+ version "1.0.4"
131
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
132
+
133
+ longest@^1.0.1:
134
+ version "1.0.1"
135
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
136
+
137
+ make-error@^1.1.1:
138
+ version "1.2.3"
139
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.3.tgz#6c4402df732e0977ac6faf754a5074b3d2b1d19d"
140
+
141
+ minimist@0.0.8, minimist@~0.0.1:
142
+ version "0.0.8"
143
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
144
+
145
+ minimist@^1.2.0:
146
+ version "1.2.0"
147
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
148
+
149
+ mkdirp@^0.5.1:
150
+ version "0.5.1"
151
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
152
+ dependencies:
153
+ minimist "0.0.8"
154
+
155
+ node-fetch@^1.0.1:
156
+ version "1.6.3"
157
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
158
+ dependencies:
159
+ encoding "^0.1.11"
160
+ is-stream "^1.0.1"
161
+
162
+ object-assign@^4.1.1:
163
+ version "4.1.1"
164
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
165
+
166
+ optimist@^0.6.1:
167
+ version "0.6.1"
168
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
169
+ dependencies:
170
+ minimist "~0.0.1"
171
+ wordwrap "~0.0.2"
172
+
173
+ repeat-string@^1.5.2:
174
+ version "1.6.1"
175
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
176
+
177
+ right-align@^0.1.1:
178
+ version "0.1.3"
179
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
180
+ dependencies:
181
+ align-text "^0.1.1"
182
+
183
+ source-map-support@^0.4.0:
184
+ version "0.4.15"
185
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
186
+ dependencies:
187
+ source-map "^0.5.6"
188
+
189
+ source-map@^0.4.4:
190
+ version "0.4.4"
191
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
192
+ dependencies:
193
+ amdefine ">=0.0.4"
194
+
195
+ source-map@^0.5.6, source-map@~0.5.1:
196
+ version "0.5.6"
197
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
198
+
199
+ strip-ansi@^3.0.0:
200
+ version "3.0.1"
201
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
202
+ dependencies:
203
+ ansi-regex "^2.0.0"
204
+
205
+ strip-bom@^3.0.0:
206
+ version "3.0.0"
207
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
208
+
209
+ strip-json-comments@^2.0.0:
210
+ version "2.0.1"
211
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
212
+
213
+ supports-color@^2.0.0:
214
+ version "2.0.0"
215
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
216
+
217
+ ts-node@^3.0.4:
218
+ version "3.0.4"
219
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.0.4.tgz#a1475ebf24fd4e2ee2fba8b1aa1605b977bde506"
220
+ dependencies:
221
+ arrify "^1.0.0"
222
+ chalk "^1.1.1"
223
+ diff "^3.1.0"
224
+ make-error "^1.1.1"
225
+ minimist "^1.2.0"
226
+ mkdirp "^0.5.1"
227
+ source-map-support "^0.4.0"
228
+ tsconfig "^6.0.0"
229
+ v8flags "^2.0.11"
230
+ yn "^1.2.0"
231
+
232
+ tsconfig@^6.0.0:
233
+ version "6.0.0"
234
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
235
+ dependencies:
236
+ strip-bom "^3.0.0"
237
+ strip-json-comments "^2.0.0"
238
+
239
+ typescript@^2.3.2:
240
+ version "2.3.2"
241
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.2.tgz#f0f045e196f69a72f06b25fd3bd39d01c3ce9984"
242
+
243
+ uglify-js@^2.6:
244
+ version "2.8.24"
245
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.24.tgz#48eb5175cf32e22ec11a47e638d7c8b4e0faf2dd"
246
+ dependencies:
247
+ source-map "~0.5.1"
248
+ yargs "~3.10.0"
249
+ optionalDependencies:
250
+ uglify-to-browserify "~1.0.0"
251
+
252
+ uglify-to-browserify@~1.0.0:
253
+ version "1.0.2"
254
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
255
+
256
+ user-home@^1.1.1:
257
+ version "1.1.1"
258
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
259
+
260
+ v8flags@^2.0.11:
261
+ version "2.1.1"
262
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
263
+ dependencies:
264
+ user-home "^1.1.1"
265
+
266
+ whatwg-fetch@>=0.10.0:
267
+ version "2.0.3"
268
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
269
+
270
+ window-size@0.1.0:
271
+ version "0.1.0"
272
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
273
+
274
+ wordwrap@0.0.2:
275
+ version "0.0.2"
276
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
277
+
278
+ wordwrap@~0.0.2:
279
+ version "0.0.3"
280
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
281
+
282
+ yargs@~3.10.0:
283
+ version "3.10.0"
284
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
285
+ dependencies:
286
+ camelcase "^1.0.2"
287
+ cliui "^2.1.0"
288
+ decamelize "^1.0.0"
289
+ window-size "0.1.0"
290
+
291
+ yn@^1.2.0:
292
+ version "1.3.0"
293
+ resolved "https://registry.yarnpkg.com/yn/-/yn-1.3.0.tgz#1b0812abb8d805d48966f8df385dc9dacc9a19d8"
294
+ dependencies:
295
+ object-assign "^4.1.1"