package.json 20.7 KB
Newer Older
E
Erich Gamma 已提交
1
{
2
  "name": "typescript-language-features",
3 4
  "description": "%description%",
  "displayName": "%displayName%",
M
Matt Bierner 已提交
5
  "version": "1.0.0",
M
Matt Bierner 已提交
6
  "icon": "icon.png",
7
  "author": "vscode",
8
  "publisher": "vscode",
9
  "license": "MIT",
10
  "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
11
  "enableProposedApi": true,
12 13 14
  "engines": {
    "vscode": "*"
  },
M
Matt Bierner 已提交
15 16 17
  "categories": [
    "Programming Languages"
  ],
18 19
  "dependencies": {
    "semver": "4.3.6",
20
    "vscode-extension-telemetry": "0.0.17",
21
    "vscode-nls": "^3.2.1"
22 23
  },
  "devDependencies": {
24
    "@types/node": "8.0.33",
25 26
    "@types/semver": "5.4.0",
    "vscode": "^1.1.10"
27 28
  },
  "scripts": {
29
    "vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:typescript ./tsconfig.json"
30 31 32 33 34 35 36 37 38
  },
  "activationEvents": [
    "onLanguage:javascript",
    "onLanguage:javascriptreact",
    "onLanguage:typescript",
    "onLanguage:typescriptreact",
    "onLanguage:jsx-tags",
    "onCommand:typescript.reloadProjects",
    "onCommand:javascript.reloadProjects",
39 40
    "onCommand:typescript.selectTypeScriptVersion",
    "onCommand:javascript.goToProjectConfig",
41
    "onCommand:typescript.goToProjectConfig",
M
Matt Bierner 已提交
42
    "onCommand:typescript.openTsServerLog",
43
    "onCommand:workbench.action.tasks.runTask"
44
  ],
45
  "main": "./out/extension",
46 47 48 49 50 51 52 53 54 55 56 57
  "contributes": {
    "configuration": {
      "type": "object",
      "title": "%configuration.typescript%",
      "order": 20,
      "properties": {
        "typescript.tsdk": {
          "type": [
            "string",
            "null"
          ],
          "default": null,
58 59
          "description": "%typescript.tsdk.desc%",
          "scope": "window"
60 61 62 63
        },
        "typescript.disableAutomaticTypeAcquisition": {
          "type": "boolean",
          "default": false,
64 65
          "description": "%typescript.disableAutomaticTypeAcquisition%",
          "scope": "window"
66
        },
M
Matt Bierner 已提交
67 68 69 70 71 72
        "typescript.npm": {
          "type": [
            "string",
            "null"
          ],
          "default": null,
73
          "description": "%typescript.npm%",
S
Sandeep Somavarapu 已提交
74
          "scope": "application"
M
Matt Bierner 已提交
75
        },
76
        "typescript.check.npmIsInstalled": {
J
Johannes Rieken 已提交
77 78
          "type": "boolean",
          "default": true,
79 80
          "description": "%typescript.check.npmIsInstalled%",
          "scope": "window"
J
Johannes Rieken 已提交
81
        },
82
        "javascript.referencesCodeLens.enabled": {
83 84
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
85 86
          "description": "%javascript.referencesCodeLens.enabled%",
          "scope": "window"
87 88 89
        },
        "typescript.referencesCodeLens.enabled": {
          "type": "boolean",
M
Matt Bierner 已提交
90
          "default": false,
M
Matt Bierner 已提交
91 92
          "description": "%typescript.referencesCodeLens.enabled%",
          "scope": "window"
93
        },
94 95 96
        "typescript.implementationsCodeLens.enabled": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
97 98
          "description": "%typescript.implementationsCodeLens.enabled%",
          "scope": "window"
99
        },
100 101 102 103 104 105 106 107 108
        "typescript.tsserver.log": {
          "type": "string",
          "enum": [
            "off",
            "terse",
            "normal",
            "verbose"
          ],
          "default": "off",
M
Matt Bierner 已提交
109 110
          "description": "%typescript.tsserver.log%",
          "scope": "window"
111
        },
112 113 114 115 116 117 118 119
        "typescript.tsserver.pluginPaths": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "%typescript.tsserver.pluginPaths.item%"
          },
          "default": [],
          "description": "%typescript.tsserver.pluginPaths%",
S
Sandeep Somavarapu 已提交
120
          "scope": "application"
121
        },
122 123 124 125 126 127 128 129
        "typescript.tsserver.trace": {
          "type": "string",
          "enum": [
            "off",
            "messages",
            "verbose"
          ],
          "default": "off",
M
Matt Bierner 已提交
130 131
          "description": "%typescript.tsserver.trace%",
          "scope": "window"
132 133 134 135
        },
        "typescript.useCodeSnippetsOnMethodSuggest": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
136 137
          "description": "%typescript.useCodeSnippetsOnMethodSuggest.dec%",
          "scope": "resource"
138
        },
139 140 141 142 143 144
        "typescript.reportStyleChecksAsWarnings": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.reportStyleChecksAsWarnings%",
          "scope": "window"
        },
145 146 147
        "typescript.validate.enable": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
148
          "description": "%typescript.validate.enable%",
149
          "scope": "window"
150 151 152 153
        },
        "typescript.format.enable": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
154
          "description": "%typescript.format.enable%",
155
          "scope": "window"
156 157 158 159
        },
        "typescript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
160 161
          "description": "%format.insertSpaceAfterCommaDelimiter%",
          "scope": "resource"
162
        },
163 164 165
        "typescript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
166 167
          "description": "%format.insertSpaceAfterConstructor%",
          "scope": "resource"
168
        },
169 170 171
        "typescript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
172 173
          "description": "%format.insertSpaceAfterSemicolonInForStatements%",
          "scope": "resource"
174 175 176 177
        },
        "typescript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
178 179
          "description": "%format.insertSpaceBeforeAndAfterBinaryOperators%",
          "scope": "resource"
180 181 182 183
        },
        "typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
184 185
          "description": "%format.insertSpaceAfterKeywordsInControlFlowStatements%",
          "scope": "resource"
186 187 188 189
        },
        "typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
190 191
          "description": "%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",
          "scope": "resource"
192
        },
193 194 195
        "typescript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
196 197
          "description": "%format.insertSpaceBeforeFunctionParenthesis%",
          "scope": "resource"
198
        },
199 200 201
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
202 203
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",
          "scope": "resource"
204 205 206 207
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
208 209
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",
          "scope": "resource"
210
        },
211 212
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
213
          "default": true,
M
Matt Bierner 已提交
214 215
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",
          "scope": "resource"
216
        },
217 218 219
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
220 221
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",
          "scope": "resource"
222 223 224 225
        },
        "typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
226 227
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",
          "scope": "resource"
228
        },
229 230 231
        "typescript.format.insertSpaceAfterTypeAssertion": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
232 233
          "description": "%format.insertSpaceAfterTypeAssertion%",
          "scope": "resource"
234
        },
235 236 237
        "typescript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
238 239
          "description": "%format.placeOpenBraceOnNewLineForFunctions%",
          "scope": "resource"
240 241 242 243
        },
        "typescript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
244 245
          "description": "%format.placeOpenBraceOnNewLineForControlBlocks%",
          "scope": "resource"
246 247 248 249
        },
        "javascript.validate.enable": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
250
          "description": "%javascript.validate.enable%",
251
          "scope": "window"
252 253 254 255
        },
        "javascript.format.enable": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
256
          "description": "%javascript.format.enable%",
257
          "scope": "window"
258 259 260 261
        },
        "javascript.format.insertSpaceAfterCommaDelimiter": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
262 263
          "description": "%format.insertSpaceAfterCommaDelimiter%",
          "scope": "resource"
264
        },
265 266 267
        "javascript.format.insertSpaceAfterConstructor": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
268 269
          "description": "%format.insertSpaceAfterConstructor%",
          "scope": "resource"
270
        },
271 272 273
        "javascript.format.insertSpaceAfterSemicolonInForStatements": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
274 275
          "description": "%format.insertSpaceAfterSemicolonInForStatements%",
          "scope": "resource"
276 277 278 279
        },
        "javascript.format.insertSpaceBeforeAndAfterBinaryOperators": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
280 281
          "description": "%format.insertSpaceBeforeAndAfterBinaryOperators%",
          "scope": "resource"
282 283 284 285
        },
        "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
286 287
          "description": "%format.insertSpaceAfterKeywordsInControlFlowStatements%",
          "scope": "resource"
288 289 290 291
        },
        "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
292 293
          "description": "%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",
          "scope": "resource"
294
        },
295 296 297
        "javascript.format.insertSpaceBeforeFunctionParenthesis": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
298 299
          "description": "%format.insertSpaceBeforeFunctionParenthesis%",
          "scope": "resource"
300
        },
301 302 303
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
304 305
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",
          "scope": "resource"
306 307 308 309
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
310 311
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",
          "scope": "resource"
312
        },
313 314
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": {
          "type": "boolean",
315
          "default": true,
M
Matt Bierner 已提交
316 317
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",
          "scope": "resource"
318
        },
319 320 321
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
322 323
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",
          "scope": "resource"
324 325 326 327
        },
        "javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
328 329
          "description": "%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",
          "scope": "resource"
330 331 332 333
        },
        "javascript.format.placeOpenBraceOnNewLineForFunctions": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
334 335
          "description": "%format.placeOpenBraceOnNewLineForFunctions%",
          "scope": "resource"
336 337 338 339
        },
        "javascript.format.placeOpenBraceOnNewLineForControlBlocks": {
          "type": "boolean",
          "default": false,
M
Matt Bierner 已提交
340 341
          "description": "%format.placeOpenBraceOnNewLineForControlBlocks%",
          "scope": "resource"
342 343 344 345
        },
        "jsDocCompletion.enabled": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
346 347
          "description": "%jsDocCompletion.enabled%",
          "scope": "resource"
348 349 350 351
        },
        "javascript.implicitProjectConfig.checkJs": {
          "type": "boolean",
          "default": false,
352
          "description": "%javascript.implicitProjectConfig.checkJs%",
353
          "scope": "window"
354 355 356 357 358
        },
        "javascript.implicitProjectConfig.experimentalDecorators": {
          "type": "boolean",
          "default": false,
          "description": "%javascript.implicitProjectConfig.experimentalDecorators%",
359
          "scope": "window"
360 361 362 363
        },
        "javascript.nameSuggestions": {
          "type": "boolean",
          "default": true,
M
Matt Bierner 已提交
364 365
          "description": "%javascript.nameSuggestions%",
          "scope": "resource"
366 367 368 369 370 371
        },
        "typescript.tsc.autoDetect": {
          "type": "string",
          "default": "on",
          "enum": [
            "on",
372
            "off",
373 374 375
            "build",
            "watch"
          ],
376
          "description": "%typescript.tsc.autoDetect%",
M
Matt Bierner 已提交
377
          "scope": "window"
378 379 380 381 382 383
        },
        "typescript.quickSuggestionsForPaths": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.quickSuggestionsForPaths%",
          "scope": "resource"
384
        },
385 386 387 388 389 390
        "typescript.autoImportSuggestions.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.autoImportSuggestions.enabled%",
          "scope": "resource"
        },
391 392 393 394 395
        "typescript.locale": {
          "type": [
            "string",
            "null"
          ],
M
Matt Bierner 已提交
396 397 398 399 400 401 402 403 404 405 406 407 408
          "enum": [
            "de",
            "es",
            "en",
            "fr",
            "it",
            "ja",
            "ko",
            "ru",
            "zh-CN",
            "zh-TW",
            null
          ],
409 410 411
          "default": null,
          "description": "%typescript.locale%",
          "scope": "window"
412 413 414
        },
        "typescript.experimental.syntaxFolding": {
          "type": "boolean",
415
          "default": false,
416
          "description": "%typescript.experimental.syntaxFolding%"
417 418 419 420 421
        },
        "javascript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%javascript.suggestionActions.enabled%",
422
          "scope": "resource"
423 424 425 426 427
        },
        "typescript.suggestionActions.enabled": {
          "type": "boolean",
          "default": true,
          "description": "%typescript.suggestionActions.enabled%",
428
          "scope": "resource"
M
Matt Bierner 已提交
429 430 431 432
        },
        "javascript.preferences.quoteStyle": {
          "type": "string",
          "enum": [
433
            "auto",
M
Matt Bierner 已提交
434 435 436
            "single",
            "double"
          ],
437
          "default": "auto",
M
Matt Bierner 已提交
438
          "description": "%typescript.preferences.quoteStyle%",
439
          "scope": "resource"
M
Matt Bierner 已提交
440 441 442 443
        },
        "typescript.preferences.quoteStyle": {
          "type": "string",
          "enum": [
444
            "auto",
M
Matt Bierner 已提交
445 446 447
            "single",
            "double"
          ],
448
          "default": "auto",
M
Matt Bierner 已提交
449
          "description": "%typescript.preferences.quoteStyle%",
450
          "scope": "resource"
451 452 453 454
        },
        "javascript.preferences.importModuleSpecifier": {
          "type": "string",
          "enum": [
455
            "auto",
456 457 458
            "relative",
            "non-relative"
          ],
459
          "default": "auto",
460
          "description": "%typescript.preferences.importModuleSpecifier%",
461
          "scope": "resource"
462 463 464 465
        },
        "typescript.preferences.importModuleSpecifier": {
          "type": "string",
          "enum": [
466
            "auto",
467 468 469
            "relative",
            "non-relative"
          ],
470
          "default": "auto",
471
          "description": "%typescript.preferences.importModuleSpecifier%",
472
          "scope": "resource"
473 474 475 476 477 478
        }
      }
    },
    "commands": [
      {
        "command": "typescript.reloadProjects",
479
        "title": "%typescript.reloadProjects.title%",
480
        "category": "TypeScript"
481 482 483
      },
      {
        "command": "javascript.reloadProjects",
484
        "title": "%javascript.reloadProjects.title%",
485
        "category": "JavaScript"
486 487 488
      },
      {
        "command": "typescript.selectTypeScriptVersion",
489
        "title": "%typescript.selectTypeScriptVersion.title%",
490 491 492 493
        "category": "TypeScript"
      },
      {
        "command": "typescript.goToProjectConfig",
494
        "title": "%typescript.goToProjectConfig.title%",
495 496
        "category": "TypeScript"
      },
M
Matt Bierner 已提交
497
      {
498
        "command": "javascript.goToProjectConfig",
499
        "title": "%javascript.goToProjectConfig.title%",
500
        "category": "JavaScript"
501 502 503
      },
      {
        "command": "typescript.openTsServerLog",
504
        "title": "%typescript.openTsServerLog.title%",
505
        "category": "TypeScript"
506 507 508
      },
      {
        "command": "typescript.restartTsServer",
509
        "title": "%typescript.restartTsServer%",
510
        "category": "TypeScript"
511
      }
512
    ],
513 514 515 516
    "menus": {
      "commandPalette": [
        {
          "command": "typescript.reloadProjects",
517
          "when": "editorLangId == typescript && typescript.isManagedFile"
518 519 520
        },
        {
          "command": "typescript.reloadProjects",
521
          "when": "editorLangId == typescriptreact && typescript.isManagedFile"
522 523 524
        },
        {
          "command": "javascript.reloadProjects",
525
          "when": "editorLangId == javascript && typescript.isManagedFile"
526 527 528
        },
        {
          "command": "javascript.reloadProjects",
529
          "when": "editorLangId == javascriptreact && typescript.isManagedFile"
530 531 532
        },
        {
          "command": "typescript.goToProjectConfig",
533
          "when": "editorLangId == typescript && typescript.isManagedFile"
534 535 536 537 538 539
        },
        {
          "command": "typescript.goToProjectConfig",
          "when": "editorLangId == typescriptreact"
        },
        {
540
          "command": "javascript.goToProjectConfig",
541
          "when": "editorLangId == javascript && typescript.isManagedFile"
542 543
        },
        {
544
          "command": "javascript.goToProjectConfig",
545
          "when": "editorLangId == javascriptreact && typescript.isManagedFile"
546 547 548 549 550 551 552 553 554 555 556 557
        },
        {
          "command": "typescript.selectTypeScriptVersion",
          "when": "typescript.isManagedFile"
        },
        {
          "command": "typescript.openTsServerLog",
          "when": "typescript.isManagedFile"
        },
        {
          "command": "typescript.restartTsServer",
          "when": "typescript.isManagedFile"
558 559 560
        }
      ]
    },
561 562 563 564 565 566 567 568
    "breakpoints": [
      {
        "language": "typescript"
      },
      {
        "language": "typescriptreact"
      }
    ],
D
Dirk Baeumer 已提交
569
    "taskDefinitions": [
D
Dirk Baeumer 已提交
570 571
      {
        "type": "typescript",
572 573 574
        "required": [
          "tsconfig"
        ],
D
Dirk Baeumer 已提交
575 576 577
        "properties": {
          "tsconfig": {
            "type": "string",
578
            "description": "%taskDefinition.tsconfig.description%"
579 580 581
          },
          "option": {
            "type": "string"
D
Dirk Baeumer 已提交
582 583 584 585
          }
        }
      }
    ],
586 587 588
    "problemPatterns": [
      {
        "name": "tsc",
589
        "regexp": "^([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
590
        "file": 1,
591 592 593 594 595
        "line": 2,
        "column": 3,
        "severity": 4,
        "code": 5,
        "message": 6
596 597 598 599 600
      }
    ],
    "problemMatchers": [
      {
        "name": "tsc",
601
        "label": "%typescript.problemMatchers.tsc.label%",
602
        "owner": "typescript",
603
        "source": "ts",
604
        "applyTo": "closedDocuments",
J
Johannes Rieken 已提交
605 606 607 608 609
        "fileLocation": [
          "relative",
          "${cwd}"
        ],
        "pattern": "$tsc"
610 611 612
      },
      {
        "name": "tsc-watch",
613
        "label": "%typescript.problemMatchers.tscWatch.label%",
614
        "owner": "typescript",
615
        "source": "ts",
616
        "applyTo": "closedDocuments",
J
Johannes Rieken 已提交
617 618 619 620
        "fileLocation": [
          "relative",
          "${cwd}"
        ],
621
        "pattern": "$tsc",
622
        "background": {
623 624
          "activeOnStart": true,
          "beginsPattern": {
625
            "regexp": "^\\s*(?:message TS6032:|\\[?\\d{1,2}:\\d{1,2}:\\d{1,2}(?: AM| PM| a\\.m\\.| p\\.m\\.)?(?:\\]| -)) File change detected\\. Starting incremental compilation\\.\\.\\."
626 627
          },
          "endsPattern": {
628
            "regexp": "^\\s*(?:message TS6042:|\\[?\\d{1,2}:\\d{1,2}:\\d{1,2}(?: AM| PM| a\\.m\\.| p\\.m\\.)?(?:\\]| -)) Compilation complete\\. Watching for file changes\\."
629 630 631
          }
        }
      }
632 633
    ]
  }
M
Matt Bierner 已提交
634
}