diff --git a/ThirdPartyNotices-Distribution.txt b/ThirdPartyNotices-Distribution.txt index f943b45d1343..e64b2b6679b4 100644 --- a/ThirdPartyNotices-Distribution.txt +++ b/ThirdPartyNotices-Distribution.txt @@ -312,186 +312,184 @@ Microsoft Python extension for Visual Studio Code incorporates third party mater 305. onigasm 2.2.2 (https://registry.npmjs.org/onigasm/-/onigasm-2.2.2.tgz) 306. optionator 0.8.2 (https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz) 307. os-tmpdir 1.0.2 (https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz) -308. packaging 19.2 (https://github.com/pypa/packaging/tree/19.2) -309. pako 0.2.9 (https://registry.npmjs.org/pako/-/pako-0.2.9.tgz) -310. parse-entities 1.2.2 (https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz) -311. parso 0.5.0 (https://github.com/davidhalter/parso/tree/v0.5.0) -312. path-browserify 0.0.1 (https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz) -313. path-is-absolute 1.0.1 (https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz) -314. path-parse 1.0.6 (https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz) -315. path-posix 1.0.0 (https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz) -316. pdfkit 0.10.0 (https://registry.npmjs.org/pdfkit/-/pdfkit-0.10.0.tgz) -317. performance-now 2.1.0 (https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz) -318. pidusage 1.2.0 (https://registry.npmjs.org/pidusage/-/pidusage-1.2.0.tgz) -319. png-js 0.1.1 (https://registry.npmjs.org/png-js/-/png-js-0.1.1.tgz) -320. polygon-offset 0.3.1 (https://registry.npmjs.org/polygon-offset/-/polygon-offset-0.3.1.tgz) -321. popper.js 1.15.0 (https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz) -322. postcss 6.0.23 (https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz) -323. prelude-ls 1.1.2 (https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz) -324. process 0.11.10 (https://registry.npmjs.org/process/-/process-0.11.10.tgz) -325. process-nextick-args 1.0.7 (https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz) -326. promise 7.3.1 (https://registry.npmjs.org/promise/-/promise-7.3.1.tgz) -327. prop-types 15.7.2 (https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz) -328. pseudomap 1.0.2 (https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz) -329. psl 1.2.0 (https://registry.npmjs.org/psl/-/psl-1.2.0.tgz) -330. ptvsd 4.2.4 (https://github.com/Microsoft/ptvsd/tree/v4.2.4) -331. punycode 2.1.1 (https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz) -332. pure-color 1.3.0 (https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz) -333. py2app (for PyDev.Debugger) (https://bitbucket.org/ronaldoussoren/py2app) -334. PyDev.Debugger (for ptvsd 4) (https://pypi.org/project/pydevd/) -335. pyparsing 2.4.0 (https://github.com/pyparsing/pyparsing/tree/pyparsing_2.4.0) -336. qs 6.5.2 (https://registry.npmjs.org/qs/-/qs-6.5.2.tgz) -337. querystringify 2.1.1 (https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz) -338. quote-stream 1.0.2 (https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz) -339. raf 3.4.1 (https://registry.npmjs.org/raf/-/raf-3.4.1.tgz) -340. react 16.8.6 (https://registry.npmjs.org/react/-/react-16.8.6.tgz) -341. react-annotation 2.1.6 (https://registry.npmjs.org/react-annotation/-/react-annotation-2.1.6.tgz) -342. react-base16-styling 0.5.3 (https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.5.3.tgz) -343. react-color 2.17.3 (https://registry.npmjs.org/react-color/-/react-color-2.17.3.tgz) -344. react-data-grid 6.1.0 (https://registry.npmjs.org/react-data-grid/-/react-data-grid-6.1.0.tgz) -345. react-dom 16.8.6 (https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz) -346. react-hot-loader 4.12.6 (https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.6.tgz) -347. react-is 16.8.6 (https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz) -348. react-json-tree 0.11.2 (https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.11.2.tgz) -349. react-lifecycles-compat 3.0.4 (https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz) -350. react-markdown 4.1.0 (https://registry.npmjs.org/react-markdown/-/react-markdown-4.1.0.tgz) -351. react-motion 0.5.2 (https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz) -352. react-move 2.9.1 (https://registry.npmjs.org/react-move/-/react-move-2.9.1.tgz) -353. react-popper 1.3.4 (https://registry.npmjs.org/react-popper/-/react-popper-1.3.4.tgz) -354. react-svg-pan-zoom 3.1.0 (https://registry.npmjs.org/react-svg-pan-zoom/-/react-svg-pan-zoom-3.1.0.tgz) -355. react-svgmt 1.1.8 (https://registry.npmjs.org/react-svgmt/-/react-svgmt-1.1.8.tgz) -356. react-table 6.10.0 (https://registry.npmjs.org/react-table/-/react-table-6.10.0.tgz) -357. react-table-hoc-fixed-columns 1.0.2 (https://registry.npmjs.org/react-table-hoc-fixed-columns/-/react-table-hoc-fixed-columns-1.0.2.tgz) -358. react-transition-group 2.9.0 (https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz) -359. react-virtualized 9.21.1 (https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.21.1.tgz) -360. reactcss 1.2.3 (https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz) -361. readable-stream 3.4.0 (https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz) -362. reflect-metadata 0.1.13 (https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz) -363. regenerator-runtime 0.13.2 (https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz) -364. regression 2.0.1 (https://registry.npmjs.org/regression/-/regression-2.0.1.tgz) -365. remark-parse 5.0.0 (https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz) -366. repeat-string 1.6.1 (https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz) -367. replace-ext 1.0.0 (https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz) -368. request 2.88.0 (https://registry.npmjs.org/request/-/request-2.88.0.tgz) -369. request-progress 3.0.0 (https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz) -370. requires-port 1.0.0 (https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz) -371. resize-observer-polyfill 1.5.1 (https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz) -372. resolve 1.11.1 (https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz) -373. restructure 0.5.4 (https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz) -374. roughjs-es5 0.1.0 (https://registry.npmjs.org/roughjs-es5/-/roughjs-es5-0.1.0.tgz) -375. rxjs 5.5.12 (https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz) -376. safe-buffer 5.1.2 (https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz) -377. safer-buffer 2.1.2 (https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz) -378. sanitize-html 1.18.5 (https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.5.tgz) -379. sax 0.5.8 (https://registry.npmjs.org/sax/-/sax-0.5.8.tgz) -380. scheduler 0.13.6 (https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz) -381. semiotic 1.19.11 (https://registry.npmjs.org/semiotic/-/semiotic-1.19.11.tgz) -382. semiotic-mark 0.3.1 (https://registry.npmjs.org/semiotic-mark/-/semiotic-mark-0.3.1.tgz) -383. semver 5.7.0 (https://registry.npmjs.org/semver/-/semver-5.7.0.tgz) -384. setImmediate (for RxJS 5.5) (https://github.com/YuzuJS/setImmediate) -385. setimmediate 1.0.5 (https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz) -386. shallow-copy 0.0.1 (https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz) -387. simple-swizzle 0.2.2 (https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz) -388. six 1.12.0 (https://github.com/benjaminp/six/tree/1.12.0) -389. sizzle (for lodash 4.17) (https://sizzlejs.com/) -390. slickgrid 2.4.9 (https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.9.tgz) -391. source-map 0.6.1 (https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz) -392. sprintf-js 1.0.3 (https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz) -393. srcset 1.0.0 (https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz) -394. sshpk 1.16.1 (https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz) -395. stack-trace 0.0.10 (https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz) -396. state-toggle 1.0.2 (https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz) -397. static-eval 2.0.2 (https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz) -398. static-module 2.2.5 (https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz) -399. string-hash 1.1.3 (https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz) -400. string_decoder 1.2.0 (https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz) -401. strip-ansi 5.2.0 (https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz) -402. style-loader 0.23.1 (https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz) -403. styled-jsx 3.2.1 (https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.1.tgz) -404. stylis-rule-sheet 0.0.10 (https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz) -405. sudo-prompt 8.2.5 (https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz) -406. supports-color 5.5.0 (https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz) -407. svg-inline-react 3.1.0 (https://registry.npmjs.org/svg-inline-react/-/svg-inline-react-3.1.0.tgz) -408. svg-path-bounding-box 1.0.4 (https://registry.npmjs.org/svg-path-bounding-box/-/svg-path-bounding-box-1.0.4.tgz) -409. svg-to-pdfkit 0.1.7 (https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.7.tgz) -410. svgpath 2.2.2 (https://registry.npmjs.org/svgpath/-/svgpath-2.2.2.tgz) -411. symbol-observable 1.0.1 (https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz) -412. text-hex 1.0.0 (https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz) -413. throttleit 1.0.0 (https://github.com/component/throttle/tree/1.0.0) -414. through 2.3.8 (https://registry.npmjs.org/through/-/through-2.3.8.tgz) -415. through2 2.0.5 (https://registry.npmjs.org/through2/-/through2-2.0.5.tgz) -416. timers-browserify 2.0.10 (https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz) -417. tiny-inflate 1.0.2 (https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz) -418. tinycolor2 1.4.1 (https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz) -419. tinyqueue 1.2.3 (https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz) -420. tmp 0.0.29 (https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz) -421. tough-cookie 2.4.3 (https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz) -422. transformation-matrix 2.0.5 (https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-2.0.5.tgz) -423. tree-kill 1.2.1 (https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz) -424. trim 0.0.1 (https://registry.npmjs.org/trim/-/trim-0.0.1.tgz) -425. trim-trailing-lines 1.1.2 (https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz) -426. triple-beam 1.3.0 (https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz) -427. trough 1.0.4 (https://registry.npmjs.org/trough/-/trough-1.0.4.tgz) -428. tslib 1.10.0 (https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz) -429. tslint 5.18.0 (https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz) -430. tsutils 2.29.0 (https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz) -431. tunnel-agent 0.6.0 (https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz) -432. tweetnacl 0.14.5 (https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz) -433. type-check 0.3.2 (https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz) -434. typed-styles 0.0.7 (https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz) -435. typedarray 0.0.6 (https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz) -436. typescript-char 0.0.0 (https://github.com/mason-lang/typescript-char) -437. ua-parser-js 0.7.20 (https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz) -438. uint64be 1.0.1 (https://registry.npmjs.org/uint64be/-/uint64be-1.0.1.tgz) -439. underscore 1.8.3 (https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz) -440. unherit 1.1.2 (https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz) -441. unicode 10.0.0 (https://registry.npmjs.org/unicode/-/unicode-10.0.0.tgz) -442. unicode-trie 0.3.1 (https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz) -443. unified 6.2.0 (https://registry.npmjs.org/unified/-/unified-6.2.0.tgz) -444. uniqid 5.0.3 (https://registry.npmjs.org/uniqid/-/uniqid-5.0.3.tgz) -445. unist-util-is 3.0.0 (https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz) -446. unist-util-remove-position 1.1.3 (https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz) -447. unist-util-stringify-position 1.1.2 (https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz) -448. unist-util-visit 1.4.1 (https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz) -449. unist-util-visit-parents 1.1.2 (https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz) -450. universalify 0.1.2 (https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz) -451. untildify 3.0.3 (https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz) -452. uri-js 4.2.2 (https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz) -453. url-parse 1.4.7 (https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz) -454. util 0.11.1 (https://registry.npmjs.org/util/-/util-0.11.1.tgz) -455. util-deprecate 1.0.2 (https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz) -456. uuid 3.3.2 (https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz) -457. validator 9.4.1 (https://registry.npmjs.org/validator/-/validator-9.4.1.tgz) -458. verror 1.10.0 (https://registry.npmjs.org/verror/-/verror-1.10.0.tgz) -459. vfile 2.3.0 (https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz) -460. vfile-location 2.0.5 (https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz) -461. vfile-message 1.1.1 (https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz) -462. viz-annotation 0.0.3 (https://registry.npmjs.org/viz-annotation/-/viz-annotation-0.0.3.tgz) -463. vlq 0.2.3 (https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz) -464. vscode-debugadapter 1.35.0 (https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.35.0.tgz) -465. vscode-debugprotocol 1.35.0 (https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz) -466. vscode-extension-telemetry 0.1.0 (https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.0.tgz) -467. vscode-jsonrpc 4.0.0 (https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz) -468. vscode-languageclient 5.2.1 (https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.2.1.tgz) -469. vscode-languageserver 5.2.1 (https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz) -470. vscode-languageserver-protocol 3.14.1 (https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz) -471. vscode-languageserver-types 3.14.0 (https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz) -472. vsls 0.3.1291 (https://registry.npmjs.org/vsls/-/vsls-0.3.1291.tgz) -473. warning 4.0.3 (https://registry.npmjs.org/warning/-/warning-4.0.3.tgz) -474. webpack (for lodash 4) (https://webpack.js.org/) -475. whatwg-fetch 3.0.0 (https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz) -476. winreg 1.2.4 (https://github.com/fresc81/node-winreg/tree/v1.2.4) -477. winston 3.2.1 (https://registry.npmjs.org/winston/-/winston-3.2.1.tgz) -478. winston-transport 4.3.0 (https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz) -479. wordwrap 1.0.0 (https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz) -480. wrappy 1.0.2 (https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz) -481. ws 6.2.1 (https://registry.npmjs.org/ws/-/ws-6.2.1.tgz) -482. x-is-string 0.1.0 (https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz) -483. xml2js 0.4.19 (https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz) -484. xmlbuilder 9.0.7 (https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz) -485. xtend 4.0.2 (https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz) -486. yallist 2.1.2 (https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz) -487. zone.js 0.7.6 (https://registry.npmjs.org/zone.js/-/zone.js-0.7.6.tgz) +308. pako 0.2.9 (https://registry.npmjs.org/pako/-/pako-0.2.9.tgz) +309. parse-entities 1.2.2 (https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz) +310. parso 0.5.0 (https://github.com/davidhalter/parso/tree/v0.5.0) +311. path-browserify 0.0.1 (https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz) +312. path-is-absolute 1.0.1 (https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz) +313. path-parse 1.0.6 (https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz) +314. path-posix 1.0.0 (https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz) +315. pdfkit 0.10.0 (https://registry.npmjs.org/pdfkit/-/pdfkit-0.10.0.tgz) +316. performance-now 2.1.0 (https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz) +317. pidusage 1.2.0 (https://registry.npmjs.org/pidusage/-/pidusage-1.2.0.tgz) +318. png-js 0.1.1 (https://registry.npmjs.org/png-js/-/png-js-0.1.1.tgz) +319. polygon-offset 0.3.1 (https://registry.npmjs.org/polygon-offset/-/polygon-offset-0.3.1.tgz) +320. popper.js 1.15.0 (https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz) +321. postcss 6.0.23 (https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz) +322. prelude-ls 1.1.2 (https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz) +323. process 0.11.10 (https://registry.npmjs.org/process/-/process-0.11.10.tgz) +324. process-nextick-args 1.0.7 (https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz) +325. promise 7.3.1 (https://registry.npmjs.org/promise/-/promise-7.3.1.tgz) +326. prop-types 15.7.2 (https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz) +327. pseudomap 1.0.2 (https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz) +328. psl 1.2.0 (https://registry.npmjs.org/psl/-/psl-1.2.0.tgz) +329. ptvsd 4.2.4 (https://github.com/Microsoft/ptvsd/tree/v4.2.4) +330. punycode 2.1.1 (https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz) +331. pure-color 1.3.0 (https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz) +332. py2app (for PyDev.Debugger) (https://bitbucket.org/ronaldoussoren/py2app) +333. PyDev.Debugger (for ptvsd 4) (https://pypi.org/project/pydevd/) +334. pyparsing 2.4.0 (https://github.com/pyparsing/pyparsing/tree/pyparsing_2.4.0) +335. qs 6.5.2 (https://registry.npmjs.org/qs/-/qs-6.5.2.tgz) +336. querystringify 2.1.1 (https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz) +337. quote-stream 1.0.2 (https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz) +338. raf 3.4.1 (https://registry.npmjs.org/raf/-/raf-3.4.1.tgz) +339. react 16.8.6 (https://registry.npmjs.org/react/-/react-16.8.6.tgz) +340. react-annotation 2.1.6 (https://registry.npmjs.org/react-annotation/-/react-annotation-2.1.6.tgz) +341. react-base16-styling 0.5.3 (https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.5.3.tgz) +342. react-color 2.17.3 (https://registry.npmjs.org/react-color/-/react-color-2.17.3.tgz) +343. react-data-grid 6.1.0 (https://registry.npmjs.org/react-data-grid/-/react-data-grid-6.1.0.tgz) +344. react-dom 16.8.6 (https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz) +345. react-hot-loader 4.12.6 (https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.6.tgz) +346. react-is 16.8.6 (https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz) +347. react-json-tree 0.11.2 (https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.11.2.tgz) +348. react-lifecycles-compat 3.0.4 (https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz) +349. react-markdown 4.1.0 (https://registry.npmjs.org/react-markdown/-/react-markdown-4.1.0.tgz) +350. react-motion 0.5.2 (https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz) +351. react-move 2.9.1 (https://registry.npmjs.org/react-move/-/react-move-2.9.1.tgz) +352. react-popper 1.3.4 (https://registry.npmjs.org/react-popper/-/react-popper-1.3.4.tgz) +353. react-svg-pan-zoom 3.1.0 (https://registry.npmjs.org/react-svg-pan-zoom/-/react-svg-pan-zoom-3.1.0.tgz) +354. react-svgmt 1.1.8 (https://registry.npmjs.org/react-svgmt/-/react-svgmt-1.1.8.tgz) +355. react-table 6.10.0 (https://registry.npmjs.org/react-table/-/react-table-6.10.0.tgz) +356. react-table-hoc-fixed-columns 1.0.2 (https://registry.npmjs.org/react-table-hoc-fixed-columns/-/react-table-hoc-fixed-columns-1.0.2.tgz) +357. react-transition-group 2.9.0 (https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz) +358. react-virtualized 9.21.1 (https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.21.1.tgz) +359. reactcss 1.2.3 (https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz) +360. readable-stream 3.4.0 (https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz) +361. reflect-metadata 0.1.13 (https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz) +362. regenerator-runtime 0.13.2 (https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz) +363. regression 2.0.1 (https://registry.npmjs.org/regression/-/regression-2.0.1.tgz) +364. remark-parse 5.0.0 (https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz) +365. repeat-string 1.6.1 (https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz) +366. replace-ext 1.0.0 (https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz) +367. request 2.88.0 (https://registry.npmjs.org/request/-/request-2.88.0.tgz) +368. request-progress 3.0.0 (https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz) +369. requires-port 1.0.0 (https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz) +370. resize-observer-polyfill 1.5.1 (https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz) +371. resolve 1.11.1 (https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz) +372. restructure 0.5.4 (https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz) +373. roughjs-es5 0.1.0 (https://registry.npmjs.org/roughjs-es5/-/roughjs-es5-0.1.0.tgz) +374. rxjs 5.5.12 (https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz) +375. safe-buffer 5.1.2 (https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz) +376. safer-buffer 2.1.2 (https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz) +377. sanitize-html 1.18.5 (https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.5.tgz) +378. sax 0.5.8 (https://registry.npmjs.org/sax/-/sax-0.5.8.tgz) +379. scheduler 0.13.6 (https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz) +380. semiotic 1.19.11 (https://registry.npmjs.org/semiotic/-/semiotic-1.19.11.tgz) +381. semiotic-mark 0.3.1 (https://registry.npmjs.org/semiotic-mark/-/semiotic-mark-0.3.1.tgz) +382. semver 5.7.0 (https://registry.npmjs.org/semver/-/semver-5.7.0.tgz) +383. setImmediate (for RxJS 5.5) (https://github.com/YuzuJS/setImmediate) +384. setimmediate 1.0.5 (https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz) +385. shallow-copy 0.0.1 (https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz) +386. simple-swizzle 0.2.2 (https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz) +387. sizzle (for lodash 4.17) (https://sizzlejs.com/) +388. slickgrid 2.4.9 (https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.9.tgz) +389. source-map 0.6.1 (https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz) +390. sprintf-js 1.0.3 (https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz) +391. srcset 1.0.0 (https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz) +392. sshpk 1.16.1 (https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz) +393. stack-trace 0.0.10 (https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz) +394. state-toggle 1.0.2 (https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz) +395. static-eval 2.0.2 (https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz) +396. static-module 2.2.5 (https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz) +397. string-hash 1.1.3 (https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz) +398. string_decoder 1.2.0 (https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz) +399. strip-ansi 5.2.0 (https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz) +400. style-loader 0.23.1 (https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz) +401. styled-jsx 3.2.1 (https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.1.tgz) +402. stylis-rule-sheet 0.0.10 (https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz) +403. sudo-prompt 8.2.5 (https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz) +404. supports-color 5.5.0 (https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz) +405. svg-inline-react 3.1.0 (https://registry.npmjs.org/svg-inline-react/-/svg-inline-react-3.1.0.tgz) +406. svg-path-bounding-box 1.0.4 (https://registry.npmjs.org/svg-path-bounding-box/-/svg-path-bounding-box-1.0.4.tgz) +407. svg-to-pdfkit 0.1.7 (https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.7.tgz) +408. svgpath 2.2.2 (https://registry.npmjs.org/svgpath/-/svgpath-2.2.2.tgz) +409. symbol-observable 1.0.1 (https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz) +410. text-hex 1.0.0 (https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz) +411. throttleit 1.0.0 (https://github.com/component/throttle/tree/1.0.0) +412. through 2.3.8 (https://registry.npmjs.org/through/-/through-2.3.8.tgz) +413. through2 2.0.5 (https://registry.npmjs.org/through2/-/through2-2.0.5.tgz) +414. timers-browserify 2.0.10 (https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz) +415. tiny-inflate 1.0.2 (https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz) +416. tinycolor2 1.4.1 (https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz) +417. tinyqueue 1.2.3 (https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz) +418. tmp 0.0.29 (https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz) +419. tough-cookie 2.4.3 (https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz) +420. transformation-matrix 2.0.5 (https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-2.0.5.tgz) +421. tree-kill 1.2.1 (https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz) +422. trim 0.0.1 (https://registry.npmjs.org/trim/-/trim-0.0.1.tgz) +423. trim-trailing-lines 1.1.2 (https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz) +424. triple-beam 1.3.0 (https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz) +425. trough 1.0.4 (https://registry.npmjs.org/trough/-/trough-1.0.4.tgz) +426. tslib 1.10.0 (https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz) +427. tslint 5.18.0 (https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz) +428. tsutils 2.29.0 (https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz) +429. tunnel-agent 0.6.0 (https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz) +430. tweetnacl 0.14.5 (https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz) +431. type-check 0.3.2 (https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz) +432. typed-styles 0.0.7 (https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz) +433. typedarray 0.0.6 (https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz) +434. typescript-char 0.0.0 (https://github.com/mason-lang/typescript-char) +435. ua-parser-js 0.7.20 (https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz) +436. uint64be 1.0.1 (https://registry.npmjs.org/uint64be/-/uint64be-1.0.1.tgz) +437. underscore 1.8.3 (https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz) +438. unherit 1.1.2 (https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz) +439. unicode 10.0.0 (https://registry.npmjs.org/unicode/-/unicode-10.0.0.tgz) +440. unicode-trie 0.3.1 (https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz) +441. unified 6.2.0 (https://registry.npmjs.org/unified/-/unified-6.2.0.tgz) +442. uniqid 5.0.3 (https://registry.npmjs.org/uniqid/-/uniqid-5.0.3.tgz) +443. unist-util-is 3.0.0 (https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz) +444. unist-util-remove-position 1.1.3 (https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz) +445. unist-util-stringify-position 1.1.2 (https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz) +446. unist-util-visit 1.4.1 (https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz) +447. unist-util-visit-parents 1.1.2 (https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz) +448. universalify 0.1.2 (https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz) +449. untildify 3.0.3 (https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz) +450. uri-js 4.2.2 (https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz) +451. url-parse 1.4.7 (https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz) +452. util 0.11.1 (https://registry.npmjs.org/util/-/util-0.11.1.tgz) +453. util-deprecate 1.0.2 (https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz) +454. uuid 3.3.2 (https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz) +455. validator 9.4.1 (https://registry.npmjs.org/validator/-/validator-9.4.1.tgz) +456. verror 1.10.0 (https://registry.npmjs.org/verror/-/verror-1.10.0.tgz) +457. vfile 2.3.0 (https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz) +458. vfile-location 2.0.5 (https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz) +459. vfile-message 1.1.1 (https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz) +460. viz-annotation 0.0.3 (https://registry.npmjs.org/viz-annotation/-/viz-annotation-0.0.3.tgz) +461. vlq 0.2.3 (https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz) +462. vscode-debugadapter 1.35.0 (https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.35.0.tgz) +463. vscode-debugprotocol 1.35.0 (https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz) +464. vscode-extension-telemetry 0.1.0 (https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.0.tgz) +465. vscode-jsonrpc 4.0.0 (https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz) +466. vscode-languageclient 5.2.1 (https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.2.1.tgz) +467. vscode-languageserver 5.2.1 (https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz) +468. vscode-languageserver-protocol 3.14.1 (https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz) +469. vscode-languageserver-types 3.14.0 (https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz) +470. vsls 0.3.1291 (https://registry.npmjs.org/vsls/-/vsls-0.3.1291.tgz) +471. warning 4.0.3 (https://registry.npmjs.org/warning/-/warning-4.0.3.tgz) +472. webpack (for lodash 4) (https://webpack.js.org/) +473. whatwg-fetch 3.0.0 (https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz) +474. winreg 1.2.4 (https://github.com/fresc81/node-winreg/tree/v1.2.4) +475. winston 3.2.1 (https://registry.npmjs.org/winston/-/winston-3.2.1.tgz) +476. winston-transport 4.3.0 (https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz) +477. wordwrap 1.0.0 (https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz) +478. wrappy 1.0.2 (https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz) +479. ws 6.2.1 (https://registry.npmjs.org/ws/-/ws-6.2.1.tgz) +480. x-is-string 0.1.0 (https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz) +481. xml2js 0.4.19 (https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz) +482. xmlbuilder 9.0.7 (https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz) +483. xtend 4.0.2 (https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz) +484. yallist 2.1.2 (https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz) +485. zone.js 0.7.6 (https://registry.npmjs.org/zone.js/-/zone.js-0.7.6.tgz) %% @babel/code-frame 7.0.0 NOTICES AND INFORMATION BEGIN HERE (https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz) @@ -2889,7 +2887,7 @@ END OF ansi_up NOTICES AND INFORMATION %% applicationinsights 1.0.6 NOTICES AND INFORMATION BEGIN HERE (https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.0.6.tgz) ========================================= -The MIT License (MIT) +The MIT License (MIT) Copyright © Microsoft Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -4517,32 +4515,32 @@ The MIT License Copyright (c) 2013 Max Ogden -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ========================================= END OF concat-stream NOTICES AND INFORMATION %% convert-source-map 1.6.0 NOTICES AND INFORMATION BEGIN HERE (https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz) ========================================= -Copyright 2013 Thorsten Lorenz. +Copyright 2013 Thorsten Lorenz. All rights reserved. Permission is hereby granted, free of charge, to any person @@ -4710,7 +4708,7 @@ END OF crypt NOTICES AND INFORMATION [The MIT License (MIT)](http://opensource.org/licenses/MIT) -Copyright (c) 2009-2013 Jeff Mott +Copyright (c) 2009-2013 Jeff Mott Copyright (c) 2013-2016 Evan Vosberg Permission is hereby granted, free of charge, to any person obtaining a copy @@ -6348,18 +6346,18 @@ Copyright (c) 2013, Deoxxa Development ====================================== All rights reserved. -------------------- - + Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + documentation and/or other materials provided with the distribution. 3. Neither the name of Deoxxa Development nor the names of its contributors may be used to endorse or promote products derived from this software - without specific prior written permission. - + without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY DEOXXA DEVELOPMENT ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -6831,7 +6829,7 @@ The MIT License (MIT) Copyright (c) 2016 David Mark Clements Copyright (c) 2017 David Mark Clements & Matteo Collina -Copyright (c) 2018 David Mark Clements, Matteo Collina & Ruben Bridgewater +Copyright (c) 2018 David Mark Clements, Matteo Collina & Ruben Bridgewater Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -7415,10 +7413,10 @@ deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -8194,9 +8192,9 @@ This software is covered under the following copyright: * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER @@ -8439,25 +8437,25 @@ The MIT License Copyright (c) 2012 Tim Caswell -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ========================================= @@ -9405,8 +9403,8 @@ THE SOFTWARE. ## Markdown -Copyright © 2004, John Gruber -http://daringfireball.net/ +Copyright © 2004, John Gruber +http://daringfireball.net/ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -9935,7 +9933,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. == dependency license: adm-zip == -Copyright (c) 2012 Another-D-Mention Software and other contributors, +Copyright (c) 2012 Another-D-Mention Software and other contributors, http://www.another-d-mention.ro/ Permission is hereby granted, free of charge, to any person obtaining @@ -10309,8 +10307,6 @@ THE SOFTWARE. ========================================= END OF os-tmpdir NOTICES AND INFORMATION -%% packaging 19.2 NOTICES AND INFORMATION BEGIN HERE (https://github.com/pypa/packaging/tree/19.2) -========================================= LICENSE This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made @@ -10735,6 +10731,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ========================================= END OF packaging NOTICES AND INFORMATION +======= %% pako 0.2.9 NOTICES AND INFORMATION BEGIN HERE (https://registry.npmjs.org/pako/-/pako-0.2.9.tgz) ========================================= (The MIT License) @@ -11861,7 +11858,7 @@ END OF react NOTICES AND INFORMATION (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and - + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and @@ -12031,7 +12028,7 @@ END OF react-color NOTICES AND INFORMATION The MIT License (MIT) Original work Copyright (c) 2014 Prometheus Research -Modified work Copyright 2015 Adazzle +Modified work Copyright 2015 Adazzle For the original source code please see https://github.com/prometheusresearch/react-grid @@ -12305,7 +12302,7 @@ END OF react-popper NOTICES AND INFORMATION ========================================= MIT License -Copyright (c) 2016 https://github.com/chrvadala +Copyright (c) 2016 https://github.com/chrvadala Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -12559,7 +12556,7 @@ Apache License Version 2.0, January 2004 -http://www.apache.org/licenses/ +http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -13169,7 +13166,7 @@ END OF roughjs-es5 NOTICES AND INFORMATION WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - + ========================================= END OF rxjs NOTICES AND INFORMATION @@ -13466,30 +13463,6 @@ THE SOFTWARE. ========================================= END OF simple-swizzle NOTICES AND INFORMATION -%% six 1.12.0 NOTICES AND INFORMATION BEGIN HERE (https://github.com/benjaminp/six/tree/1.12.0) -========================================= -Copyright (c) 2010-2018 Benjamin Peterson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -========================================= -END OF six NOTICES AND INFORMATION - %% sizzle (for lodash 4.17) NOTICES AND INFORMATION BEGIN HERE (https://sizzlejs.com/) ========================================= Copyright (c) 2009 John Resig @@ -14138,25 +14111,25 @@ The MIT License Copyright (c) 2011 Dominic Tarr -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ========================================= @@ -14490,7 +14463,7 @@ Apache License Version 2.0, January 2004 -http://www.apache.org/licenses/ +http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -15630,7 +15603,7 @@ END OF vlq NOTICES AND INFORMATION ========================================= Copyright (c) Microsoft Corporation -All rights reserved. +All rights reserved. MIT License @@ -15647,7 +15620,7 @@ END OF vscode-debugadapter NOTICES AND INFORMATION ========================================= Copyright (c) Microsoft Corporation -All rights reserved. +All rights reserved. MIT License diff --git a/pythonFiles/install_ptvsd.py b/pythonFiles/install_ptvsd.py index 942d16f1e76f..d89ab3c96554 100644 --- a/pythonFiles/install_ptvsd.py +++ b/pythonFiles/install_ptvsd.py @@ -1,63 +1,57 @@ -from io import BytesIO -from os import path -from zipfile import ZipFile +import io import json -import urllib.request -import sys +import os +import urllib.request as url_lib +import zipfile -ROOT = path.dirname(path.dirname(path.abspath(__file__))) -REQUIREMENTS = path.join(ROOT, "requirements.txt") -PYTHONFILES = path.join(ROOT, "pythonFiles", "lib", "python") -PYPI_PTVSD_URL = "https://pypi.org/pypi/ptvsd/json" +EXTENSION_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +DEBUGGER_DEST = os.path.join(EXTENSION_ROOT, "pythonFiles", "lib", "python") +DEBUGGER_PACKAGE = "ptvsd" +DEBUGGER_VERSION = "5.0.0a5" +DEBUGGER_PYTHON_VERSIONS = ("cp37",) -def install_ptvsd(): - sys.path.insert(0, PYTHONFILES) - from packaging.requirements import Requirement - with open(REQUIREMENTS, "r", encoding="utf-8") as reqsfile: - for line in reqsfile: - pkgreq = Requirement(line) - if pkgreq.name == "ptvsd": - specs = pkgreq.specifier - version = next(iter(specs)).version - break +def _contains(s, parts=()): + return any(p for p in parts if p in s) - try: - version - except NameError: - raise Exception("ptvsd requirement not found.") +def _get_debugger_wheel_urls(): + json_uri = "https://pypi.org/pypi/{0}/json".format(DEBUGGER_PACKAGE) # Response format: https://warehouse.readthedocs.io/api-reference/json/#project - with urllib.request.urlopen(PYPI_PTVSD_URL) as response: + # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst + with url_lib.urlopen(json_uri) as response: json_response = json.loads(response.read()) - releases = json_response["releases"] + return list( + r["url"] + for r in json_response["releases"][DEBUGGER_VERSION] + if _contains(r["url"], DEBUGGER_PYTHON_VERSIONS) + ) - # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst - for wheel_info in releases[version]: - # Download only if it's a 3.7 wheel. - if not wheel_info["python_version"].endswith(("37", "3.7")): - continue - - # Trim the file extension and remove the ptvsd version from the folder name. - filename = wheel_info["filename"].rpartition(".")[0] - filename = filename.replace(f"{version}-", "") - ptvsd_path = path.join(PYTHONFILES, filename) - - with urllib.request.urlopen(wheel_info["url"]) as wheel_response: - wheel_file = BytesIO(wheel_response.read()) + +def _download_and_extract(root, url): + root = os.getcwd() if root is None or root == "." else root + prefix = os.path.join("ptvsd-{0}.data".format(DEBUGGER_VERSION), "purelib") + with url_lib.urlopen(url) as response: # Extract only the contents of the purelib subfolder (parent folder of ptvsd), # since ptvsd files rely on the presence of a 'ptvsd' folder. - prefix = path.join(f"ptvsd-{version}.data", "purelib") - - with ZipFile(wheel_file, "r") as wheel: + with zipfile.ZipFile(io.BytesIO(response.read()), "r") as wheel: for zip_info in wheel.infolist(): - # Normalize path for Windows, the wheel folder structure uses forward slashes. - normalized = path.normpath(zip_info.filename) + # Ignore dist info since we are merging multiple wheels + if ".dist-info" in zip_info.filename: + continue + # Normalize path for Windows, the wheel folder structure + # uses forward slashes. + normalized = os.path.normpath(zip_info.filename) # Flatten the folder structure. zip_info.filename = normalized.split(prefix)[-1] - wheel.extract(zip_info, ptvsd_path) + wheel.extract(zip_info, root) + + +def main(root): + for url in _get_debugger_wheel_urls(): + _download_and_extract(root, url) if __name__ == "__main__": - install_ptvsd() + main(DEBUGGER_DEST) diff --git a/pythonFiles/ptvsd_folder_name.py b/pythonFiles/ptvsd_folder_name.py deleted file mode 100644 index 2d6a56473939..000000000000 --- a/pythonFiles/ptvsd_folder_name.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import sys -import os.path - -ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -PYTHONFILES = os.path.join(ROOT, "pythonFiles", "lib", "python") - -sys.path.insert(0, PYTHONFILES) - -from packaging.tags import sys_tags - -sys.path.remove(PYTHONFILES) - - -def ptvsd_folder_name(): - """Return the folder name for the bundled PTVSD wheel compatible with the new debug adapter.""" - - try: - for tag in sys_tags(): - folder_name = f"ptvsd-{tag.interpreter}-{tag.abi}-{tag.platform}" - folder_path = os.path.join(PYTHONFILES, folder_name) - if os.path.exists(folder_path): - print(folder_path, end="") - return - except: - # Fallback to use base PTVSD path no matter the exception. - print(PYTHONFILES, end="") - return - - # Default fallback to use base PTVSD path. - print(PYTHONFILES, end="") - - -if __name__ == "__main__": - ptvsd_folder_name() diff --git a/pythonFiles/tests/debug_adapter/test_install_ptvsd.py b/pythonFiles/tests/debug_adapter/test_install_ptvsd.py new file mode 100644 index 000000000000..18b74dcd6abe --- /dev/null +++ b/pythonFiles/tests/debug_adapter/test_install_ptvsd.py @@ -0,0 +1,35 @@ +import os +import pytest +import subprocess +import sys + + +def _check_binaries(dir_path): + expected_endswith = ( + "win_amd64.pyd", + "win32.pyd", + "darwin.so", + "i386-linux-gnu.so", + "x86_64-linux-gnu.so", + ) + + binaries = list(p for p in os.listdir(dir_path) if p.endswith(expected_endswith)) + + assert len(binaries) == len(expected_endswith) + +@pytest.mark.skipif( + sys.version_info[:2] != (3, 7), + reason="PTVSD wheels shipped for Python 3.7 only", +) +def test_install_ptvsd(tmpdir): + import install_ptvsd + install_ptvsd.main(str(tmpdir)) + dir_path = os.path.join( + str(tmpdir), "ptvsd", "_vendored", "pydevd", "_pydevd_bundle" + ) + _check_binaries(dir_path) + + dir_path = os.path.join( + str(tmpdir), "ptvsd", "_vendored", "pydevd", "_pydevd_frame_eval" + ) + _check_binaries(dir_path) diff --git a/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name.py b/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name.py deleted file mode 100644 index 4bebd2eb5b48..000000000000 --- a/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. -import sys - -if sys.version_info[:2] != (3, 7): - import unittest - - raise unittest.SkipTest("PTVSD wheels shipped for Python 3.7 only") - -import os.path -import pytest -import re - -from unittest.mock import patch, mock_open -from packaging.tags import sys_tags -from ptvsd_folder_name import ptvsd_folder_name - -from .. import PYTHONFILES - - -class TestPtvsdFolderName: - """Unit tests for the script retrieving the PTVSD folder name for the PTVSD wheels experiment.""" - - def test_folder_exists(self, capsys): - # Return the first constructed folder path as existing. - - patcher = patch("os.path.exists") - mock_exists = patcher.start() - mock_exists.side_effect = lambda p: True - tag = next(sys_tags()) - folder = "ptvsd-{}-{}-{}".format(tag.interpreter, tag.abi, tag.platform) - - ptvsd_folder_name() - - patcher.stop() - expected = os.path.join(PYTHONFILES, folder) - captured = capsys.readouterr() - assert captured.out == expected - - def test_no_wheel_folder(self, capsys): - # Return none of of the constructed paths as existing, - # ptvsd_folder_name() should return the path to default ptvsd. - patcher = patch("os.path.exists") - mock_no_exist = patcher.start() - mock_no_exist.side_effect = lambda p: False - - ptvsd_folder_name() - - patcher.stop() - expected = PYTHONFILES - captured = capsys.readouterr() - assert captured.out == expected - diff --git a/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name_functional.py b/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name_functional.py deleted file mode 100644 index db7512e84f51..000000000000 --- a/pythonFiles/tests/debug_adapter/test_ptvsd_folder_name_functional.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import sys - -if sys.version_info[:2] != (3, 7): - import unittest - - raise unittest.SkipTest("PTVSD wheels shipped for Python 3.7 only") - -import os.path -import pytest -import subprocess - -from packaging.requirements import Requirement -from .. import PYTHONFILES, SRC_ROOT - -ARGV = ["python", os.path.join(SRC_ROOT, "ptvsd_folder_name.py")] - - -def ptvsd_paths(*platforms): - paths = set() - for platform in platforms: - folder = "ptvsd-cp37-cp37m-{}".format(platform) - paths.add(os.path.join(PYTHONFILES, folder)) - return paths - - -@pytest.mark.functional -class TestPtvsdFolderNameFunctional: - """Functional tests for the script retrieving the PTVSD folder name for the PTVSD wheels experiment.""" - - def test_ptvsd_folder_name_nofail(self): - output = subprocess.check_output(ARGV, universal_newlines=True) - assert output != PYTHONFILES - - @pytest.mark.skipif(sys.platform != "darwin", reason="macOS functional test") - def test_ptvsd_folder_name_macos(self): - output = subprocess.check_output(ARGV, universal_newlines=True) - assert output in ptvsd_paths("macosx_10_13_x86_64") - - @pytest.mark.skipif(sys.platform != "win32", reason="Windows functional test") - def test_ptvsd_folder_name_windows(self): - output = subprocess.check_output(ARGV, universal_newlines=True) - assert output in ptvsd_paths("win32", "win_amd64") - - @pytest.mark.skipif(sys.platform != "linux", reason="Linux functional test") - def test_ptvsd_folder_name_linux(self): - output = subprocess.check_output(ARGV, universal_newlines=True) - assert output in ptvsd_paths( - "manylinux1_i686", "manylinux1_x86_64", "manylinux2010_x86_64" - ) diff --git a/requirements.txt b/requirements.txt index 619eaac005da..9b03bdf2f7f4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,4 @@ jedi==0.15.1 parso==0.5.1 isort==4.3.21 -ptvsd==5.0.0a5 pyparsing==2.4.0 -six==1.12.0 -packaging==19.2 diff --git a/src/client/api.ts b/src/client/api.ts index 4ce68254528a..4c561c6c19e1 100644 --- a/src/client/api.ts +++ b/src/client/api.ts @@ -49,13 +49,13 @@ export function buildApi(ready: Promise, experimentsManager: IExperimentsMa const useNewDAPtvsd = experimentsManager.inExperiment(DebugAdapterExperiment.experiment) && (await debugFactory.useNewPtvsd(pythonSettings.pythonPath)); if (!useNewDAPtvsd) { - return new RemoteDebuggerExternalLauncherScriptProvider().getLauncherArgs({ host, port, waitUntilDebuggerAttaches }); - } + return new RemoteDebuggerExternalLauncherScriptProvider().getLauncherArgs({ host, port, waitUntilDebuggerAttaches }); + } // Same logic as in RemoteDebuggerExternalLauncherScriptProvider, but eventually launcherProvider.ts will be deleted. const args = debugFactory.getRemotePtvsdArgs({ host, port, waitUntilDebuggerAttaches }); - return [await debugFactory.getPtvsdPath(pythonSettings.pythonPath), ...args]; - } + return [debugFactory.getPtvsdPath(), ...args]; + } } }; } diff --git a/src/client/debugger/extension/adapter/factory.ts b/src/client/debugger/extension/adapter/factory.ts index 8b0155f39c60..b591a7194a68 100644 --- a/src/client/debugger/extension/adapter/factory.ts +++ b/src/client/debugger/extension/adapter/factory.ts @@ -3,23 +3,18 @@ 'use strict'; -import * as fs from 'fs'; import { inject, injectable } from 'inversify'; import * as path from 'path'; -import { parse } from 'semver'; -import { promisify } from 'util'; -import { DebugAdapterDescriptor, DebugAdapterExecutable, DebugSession, WorkspaceFolder } from 'vscode'; +import { DebugAdapterDescriptor, DebugAdapterExecutable, DebugAdapterServer, DebugSession, WorkspaceFolder } from 'vscode'; import { IApplicationShell } from '../../../common/application/types'; -import { PVSC_EXTENSION_ID } from '../../../common/constants'; import { DebugAdapterNewPtvsd } from '../../../common/experimentGroups'; import { traceVerbose } from '../../../common/logger'; -import { IPythonExecutionFactory } from '../../../common/process/types'; -import { IExperimentsManager, IExtensions, IPersistentStateFactory } from '../../../common/types'; +import { IExperimentsManager } from '../../../common/types'; import { EXTENSION_ROOT_DIR } from '../../../constants'; import { IInterpreterService } from '../../../interpreter/contracts'; import { RemoteDebugOptions } from '../../debugAdapter/types'; import { AttachRequestArguments, LaunchRequestArguments } from '../../types'; -import { DebugAdapterPtvsdPathInfo, IDebugAdapterDescriptorFactory } from '../types'; +import { IDebugAdapterDescriptorFactory } from '../types'; export const ptvsdPathStorageKey = 'PTVSD_PATH_STORAGE_KEY'; @@ -28,20 +23,29 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac constructor( @inject(IInterpreterService) private readonly interpreterService: IInterpreterService, @inject(IApplicationShell) private readonly appShell: IApplicationShell, - @inject(IExperimentsManager) private readonly experimentsManager: IExperimentsManager, - @inject(IPythonExecutionFactory) private readonly executionFactory: IPythonExecutionFactory, - @inject(IPersistentStateFactory) private readonly stateFactory: IPersistentStateFactory, - @inject(IExtensions) private readonly extensions: IExtensions - ) {} + @inject(IExperimentsManager) private readonly experimentsManager: IExperimentsManager + ) { } public async createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable | undefined): Promise { const configuration = session.configuration as (LaunchRequestArguments | AttachRequestArguments); - const pythonPath = await this.getPythonPath(configuration, session.workspaceFolder); - if (await this.useNewPtvsd(pythonPath)) { - // If logToFile is set in the debug config then pass --log-dir when launching the debug adapter. - const logArgs = configuration.logToFile ? ['--log-dir', EXTENSION_ROOT_DIR] : []; - const ptvsdPathToUse = await this.getPtvsdPath(pythonPath); - return new DebugAdapterExecutable(`${pythonPath}`, [path.join(ptvsdPathToUse, 'adapter'), ...logArgs]); + if (this.experimentsManager.inExperiment(DebugAdapterNewPtvsd.experiment)) { + if (configuration.request === 'attach') { + const port = configuration.port ? configuration.port : 0; + if (port === 0) { + throw new Error('Port must be specified for request type attach'); + } + return new DebugAdapterServer(port, configuration.host); + } else { + const pythonPath = await this.getPythonPath(configuration, session.workspaceFolder); + if (await this.useNewPtvsd(pythonPath)) { + // If logToFile is set in the debug config then pass --log-dir when launching the debug adapter. + const logArgs = configuration.logToFile ? ['--log-dir', EXTENSION_ROOT_DIR] : []; + const ptvsdPathToUse = this.getPtvsdPath(); + return new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPathToUse, 'adapter'), ...logArgs]); + } + } + } else { + this.experimentsManager.sendTelemetryIfInExperiment(DebugAdapterNewPtvsd.control); } // Use the Node debug adapter (and ptvsd_launcher.py) @@ -60,11 +64,6 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac * @memberof DebugAdapterDescriptorFactory */ public async useNewPtvsd(pythonPath: string): Promise { - if (!this.experimentsManager.inExperiment(DebugAdapterNewPtvsd.experiment)) { - this.experimentsManager.sendTelemetryIfInExperiment(DebugAdapterNewPtvsd.control); - return false; - } - const interpreterInfo = await this.interpreterService.getInterpreterDetails(pythonPath); if (!interpreterInfo || !interpreterInfo.version || !interpreterInfo.version.raw.startsWith('3.7')) { return false; @@ -73,16 +72,8 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac return true; } - public async getPtvsdPath(pythonPath: string): Promise { - let ptvsdPathToUse: string; - - try { - ptvsdPathToUse = await this.getPtvsdFolder(pythonPath); - } catch { - ptvsdPathToUse = path.join(EXTENSION_ROOT_DIR, 'pythonFiles'); - } - - return path.join(ptvsdPathToUse, 'ptvsd'); + public getPtvsdPath(): string { + return path.join(EXTENSION_ROOT_DIR, 'pythonFiles', 'lib', 'python', 'ptvsd'); } public getRemotePtvsdArgs(remoteDebugOptions: RemoteDebugOptions): string[] { @@ -132,47 +123,6 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac */ private async notifySelectInterpreter() { // tslint:disable-next-line: messages-must-be-localized - await this.appShell.showErrorMessage('Please install Python or select a Python Interpereter to use the debugger.'); - } - - /** - * Return the folder name for the bundled PTVSD wheel compatible with the new debug adapter. - * Use `ptvsd_folder_name.py` to compute the experimental PTVSD folder name in 2 cases: - * - It has never been computed before; - * - The extension number has changed since the last time it was cached. - * - * Return a cached path otherwise, since we pin the PTVSD version with each extension release, - * and other factors on folder selection (like host platform) won't change. - * - * @private - * @param {string} pythonPath Path to the python executable used to launch the Python Debug Adapter (result of `this.getPythonPath()`) - * @returns {Promise} Path to the PTVSD version to use in the debug adapter. - * @memberof DebugAdapterDescriptorFactory - */ - private async getPtvsdFolder(pythonPath: string): Promise { - const persistentState = this.stateFactory.createGlobalPersistentState(ptvsdPathStorageKey, undefined); - const extension = this.extensions.getExtension(PVSC_EXTENSION_ID)!; - const version = parse(extension.packageJSON.version)!; - - if (persistentState.value && version.raw === persistentState.value.extensionVersion) { - const cachedPath = persistentState.value.ptvsdPath; - const access = promisify(fs.access); - try { - await access(cachedPath, fs.constants.F_OK); - return cachedPath; - } catch (err) { - // The path to the cached folder didn't exist (ptvsd requirements updated during development), so run the script again. - } - } - - // The ptvsd path wasn't cached, so run the script and cache it. - const pathToScript = path.join(EXTENSION_ROOT_DIR, 'pythonFiles', 'ptvsd_folder_name.py'); - const pythonProcess = await this.executionFactory.create({ pythonPath }); - const executionResult = await pythonProcess.exec([pathToScript], {}); - const pathToPtvsd = executionResult.stdout.trim(); - - await persistentState.updateValue({ extensionVersion: version.raw, ptvsdPath: pathToPtvsd }); - - return pathToPtvsd; + await this.appShell.showErrorMessage('Please install Python or select a Python Interpreter to use the debugger.'); } } diff --git a/src/client/debugger/extension/types.ts b/src/client/debugger/extension/types.ts index 64922eef1dcd..1accd67965a6 100644 --- a/src/client/debugger/extension/types.ts +++ b/src/client/debugger/extension/types.ts @@ -9,7 +9,7 @@ import { RemoteDebugOptions } from '../debugAdapter/types'; import { DebugConfigurationArguments } from '../types'; export const IDebugConfigurationService = Symbol('IDebugConfigurationService'); -export interface IDebugConfigurationService extends DebugConfigurationProvider {} +export interface IDebugConfigurationService extends DebugConfigurationProvider { } export const IDebuggerBanner = Symbol('IDebuggerBanner'); export interface IDebuggerBanner { initialize(): void; @@ -39,7 +39,7 @@ export enum PythonPathSource { export const IDebugAdapterDescriptorFactory = Symbol('IDebugAdapterDescriptorFactory'); export interface IDebugAdapterDescriptorFactory extends DebugAdapterDescriptorFactory { useNewPtvsd(pythonPath: string): Promise; - getPtvsdPath(pythonPath: string): Promise; + getPtvsdPath(): string; getRemotePtvsdArgs(remoteDebugOptions: RemoteDebugOptions): string[]; } diff --git a/src/test/debugger/extension/adapter/factory.unit.test.ts b/src/test/debugger/extension/adapter/factory.unit.test.ts index aa44cd56e230..717c755c91eb 100644 --- a/src/test/debugger/extension/adapter/factory.unit.test.ts +++ b/src/test/debugger/extension/adapter/factory.unit.test.ts @@ -11,10 +11,9 @@ import * as path from 'path'; import rewiremock from 'rewiremock'; import { SemVer } from 'semver'; import { anyString, anything, instance, mock, spy, verify, when } from 'ts-mockito'; -import { DebugAdapterExecutable, DebugConfiguration, DebugSession, WorkspaceFolder } from 'vscode'; +import { DebugAdapterExecutable, DebugAdapterServer, DebugConfiguration, DebugSession, WorkspaceFolder } from 'vscode'; import { ApplicationEnvironment } from '../../../../client/common/application/applicationEnvironment'; import { ApplicationShell } from '../../../../client/common/application/applicationShell'; -import { Extensions } from '../../../../client/common/application/extensions'; import { IApplicationShell } from '../../../../client/common/application/types'; import { WorkspaceService } from '../../../../client/common/application/workspace'; import { ConfigurationService } from '../../../../client/common/configuration/service'; @@ -22,16 +21,13 @@ import { CryptoUtils } from '../../../../client/common/crypto'; import { DebugAdapterNewPtvsd } from '../../../../client/common/experimentGroups'; import { ExperimentsManager } from '../../../../client/common/experiments'; import { HttpClient } from '../../../../client/common/net/httpClient'; -import { PersistentState, PersistentStateFactory } from '../../../../client/common/persistentState'; +import { PersistentStateFactory } from '../../../../client/common/persistentState'; import { FileSystem } from '../../../../client/common/platform/fileSystem'; -import { PythonExecutionFactory } from '../../../../client/common/process/pythonExecutionFactory'; -import { PythonExecutionService } from '../../../../client/common/process/pythonProcess'; -import { IPythonExecutionFactory } from '../../../../client/common/process/types'; -import { IExtensions, IPersistentState, IPersistentStateFactory, IPythonSettings } from '../../../../client/common/types'; +import { IPythonSettings } from '../../../../client/common/types'; import { Architecture } from '../../../../client/common/utils/platform'; import { EXTENSION_ROOT_DIR } from '../../../../client/constants'; -import { DebugAdapterDescriptorFactory, ptvsdPathStorageKey } from '../../../../client/debugger/extension/adapter/factory'; -import { DebugAdapterPtvsdPathInfo, IDebugAdapterDescriptorFactory } from '../../../../client/debugger/extension/types'; +import { DebugAdapterDescriptorFactory } from '../../../../client/debugger/extension/adapter/factory'; +import { IDebugAdapterDescriptorFactory } from '../../../../client/debugger/extension/types'; import { IInterpreterService, InterpreterType } from '../../../../client/interpreter/contracts'; import { InterpreterService } from '../../../../client/interpreter/interpreterService'; import { clearTelemetryReporter } from '../../../../client/telemetry'; @@ -47,14 +43,9 @@ suite('Debugging - Adapter Factory', () => { let appShell: IApplicationShell; let experimentsManager: ExperimentsManager; let spiedInstance: ExperimentsManager; - let executionFactory: IPythonExecutionFactory; - let stateFactory: IPersistentStateFactory; - let debugAdapterPersistentState: IPersistentState; - let extensions: IExtensions; const nodeExecutable = { command: 'node', args: [] }; - const mockExtensionVersion = new SemVer('2019.9.0'); - const ptvsdPath = path.join(EXTENSION_ROOT_DIR, 'pythonFiles'); + const ptvsdAdapterPath = path.join(EXTENSION_ROOT_DIR, 'pythonFiles', 'lib', 'python', 'ptvsd', 'adapter'); const pythonPath = path.join('path', 'to', 'python', 'interpreter'); const interpreter = { architecture: Architecture.Unknown, @@ -108,23 +99,14 @@ suite('Debugging - Adapter Factory', () => { interpreterService = mock(InterpreterService); appShell = mock(ApplicationShell); - executionFactory = mock(PythonExecutionFactory); - stateFactory = mock(PersistentStateFactory); - debugAdapterPersistentState = mock(PersistentState); - extensions = mock(Extensions); - // tslint:disable-next-line: no-any - when(extensions.getExtension(anything())).thenReturn({ packageJSON: { version: mockExtensionVersion } } as any); when(interpreterService.getInterpreterDetails(pythonPath)).thenResolve(interpreter); when(interpreterService.getInterpreters(anything())).thenResolve([interpreter]); factory = new DebugAdapterDescriptorFactory( instance(interpreterService), instance(appShell), - experimentsManager, - instance(executionFactory), - instance(stateFactory), - instance(extensions) + experimentsManager ); }); @@ -138,13 +120,6 @@ suite('Debugging - Adapter Factory', () => { clearTelemetryReporter(); }); - function mockPtvsdInfoPersistentState(sameVersion: boolean) { - const debugAdapterInfo: DebugAdapterPtvsdPathInfo = { extensionVersion: sameVersion ? mockExtensionVersion.raw : '2019.10.0-dev', ptvsdPath }; - - when(stateFactory.createGlobalPersistentState(ptvsdPathStorageKey, undefined)).thenReturn(instance(debugAdapterPersistentState)); - when(debugAdapterPersistentState.value).thenReturn(debugAdapterInfo); - } - function createSession(config: Partial, workspaceFolder?: WorkspaceFolder): DebugSession { return { configuration: { name: '', request: 'launch', type: 'python', ...config }, @@ -158,9 +133,8 @@ suite('Debugging - Adapter Factory', () => { test('Return the value of configuration.pythonPath as the current python path if it exists and if we are in the experiment', async () => { const session = createSession({ pythonPath }); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -170,9 +144,8 @@ suite('Debugging - Adapter Factory', () => { test('Return the path of the active interpreter as the current python path if we are in the experiment, it exists and configuration.pythonPath is not defined', async () => { const session = createSession({}); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); when(interpreterService.getActiveInterpreter(anything())).thenResolve(interpreter); @@ -183,9 +156,8 @@ suite('Debugging - Adapter Factory', () => { test('Return the path of the first available interpreter as the current python path if we are in the experiment, configuration.pythonPath is not defined and there is no active interpreter', async () => { const session = createSession({}); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -196,12 +168,44 @@ suite('Debugging - Adapter Factory', () => { test('Display a message if no python interpreter is set and we are in the experiment', async () => { when(interpreterService.getInterpreters(anything())).thenResolve([]); const session = createSession({}); + + when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); verify(appShell.showErrorMessage(anyString())).once(); assert.deepEqual(descriptor, nodeExecutable); }); + test('Return Debug Adapter server if attach configuration and we are in experiment', async () => { + const session = createSession({ request: 'attach', port: 5678, host: 'localhost' }); + const debugServer = new DebugAdapterServer(session.configuration.port, session.configuration.host); + + when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); + const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); + + // Interpreter not needed for attach + verify(interpreterService.getInterpreters(anything())).never(); + assert.deepEqual(descriptor, debugServer); + }); + + test('Throw error if configuration is attach and in experiment and port is 0', async () => { + const session = createSession({ request: 'attach', port: 0, host: 'localhost' }); + + when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); + const promise = factory.createDebugAdapterDescriptor(session, nodeExecutable); + + await expect(promise).to.eventually.be.rejectedWith('Port must be specified for request type attach'); + }); + + test('Throw error if configuration is attach and in experiment and port is not specified', async () => { + const session = createSession({ request: 'attach', port: undefined }); + + when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); + const promise = factory.createDebugAdapterDescriptor(session, nodeExecutable); + + await expect(promise).to.eventually.be.rejectedWith('Port must be specified for request type attach'); + }); + test('Return old node debugger when not in the experiment', async () => { const session = createSession({}); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -229,10 +233,9 @@ suite('Debugging - Adapter Factory', () => { }); test('Return Python debug adapter executable when in the experiment and with the active interpreter being Python 3.7', async () => { - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); const session = createSession({}); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -247,86 +250,10 @@ suite('Debugging - Adapter Factory', () => { await expect(promise).to.eventually.be.rejectedWith('Debug Adapter Executable not provided'); }); - test('Save the PTVSD path in persistent storage if it doesn\'t exist in the cache', async () => { - const persistentPtvsdPath = path.join('persistent', 'ptvsd', 'path'); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(persistentPtvsdPath, 'ptvsd', 'adapter')]); - const session = createSession({}); - let execCalled = false; - - when(stateFactory.createGlobalPersistentState(ptvsdPathStorageKey, undefined)).thenReturn(instance(debugAdapterPersistentState)); - when(debugAdapterPersistentState.value).thenReturn(undefined); - when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); - const pythonExecService = ({ - exec: () => { - execCalled = true; - return Promise.resolve({ stdout: persistentPtvsdPath }); - } - // tslint:disable-next-line: no-any - } as any) as PythonExecutionService; - when(executionFactory.create(anything())).thenResolve(pythonExecService); - - const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); - - assert.deepEqual(descriptor, debugExecutable); - assert.equal(execCalled, true); - verify(executionFactory.create(anything())).once(); - verify(debugAdapterPersistentState.updateValue(anything())).once(); - }); - - test('Save the PTVSD path in persistent storage if the extension version in the cache is different from the actual one', async () => { - const session = createSession({}); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); - let execCalled = false; - - mockPtvsdInfoPersistentState(false); - when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); - const pythonExecService = ({ - exec: () => { - execCalled = true; - return Promise.resolve({ stdout: ptvsdPath }); - } - // tslint:disable-next-line: no-any - } as any) as PythonExecutionService; - when(executionFactory.create(anything())).thenResolve(pythonExecService); - - const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); - - assert.deepEqual(descriptor, debugExecutable); - assert.equal(execCalled, true); - verify(executionFactory.create(anything())).once(); - verify(debugAdapterPersistentState.updateValue(anything())).once(); - }); - - test('Use the cached path to PTVSD if it exists and the extension version hasn\'t changed since the value was saved', async () => { - const session = createSession({}); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); - let execCalled = false; - - mockPtvsdInfoPersistentState(true); - when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); - const pythonExecService = ({ - exec: () => { - execCalled = true; - return Promise.resolve({ stdout: ptvsdPath }); - } - // tslint:disable-next-line: no-any - } as any) as PythonExecutionService; - when(executionFactory.create(anything())).thenResolve(pythonExecService); - - const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); - - assert.deepEqual(descriptor, debugExecutable); - assert.equal(execCalled, false); - verify(executionFactory.create(anything())).never(); - verify(debugAdapterPersistentState.updateValue(anything())).never(); - verify(debugAdapterPersistentState.value).thrice(); - }); - test('Pass the --log-dir argument to PTVSD is configuration.logToFile is set', async () => { const session = createSession({ logToFile: true }); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter'), '--log-dir', EXTENSION_ROOT_DIR]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath, '--log-dir', EXTENSION_ROOT_DIR]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -336,9 +263,8 @@ suite('Debugging - Adapter Factory', () => { test('Don\'t pass the --log-dir argument to PTVSD is configuration.logToFile is not set', async () => { const session = createSession({}); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); @@ -348,9 +274,8 @@ suite('Debugging - Adapter Factory', () => { test('Don\'t pass the --log-dir argument to PTVSD is configuration.logToFile is set but false', async () => { const session = createSession({ logToFile: false }); - const debugExecutable = new DebugAdapterExecutable(pythonPath, [path.join(ptvsdPath, 'ptvsd', 'adapter')]); + const debugExecutable = new DebugAdapterExecutable(pythonPath, [ptvsdAdapterPath]); - mockPtvsdInfoPersistentState(true); when(spiedInstance.inExperiment(DebugAdapterNewPtvsd.experiment)).thenReturn(true); const descriptor = await factory.createDebugAdapterDescriptor(session, nodeExecutable); diff --git a/src/test/extension.unit.test.ts b/src/test/extension.unit.test.ts index 4ba6564dd50b..d6d4f878b677 100644 --- a/src/test/extension.unit.test.ts +++ b/src/test/extension.unit.test.ts @@ -35,7 +35,7 @@ suite('Extension API Debugger', () => { function mockInExperiment() { when(experimentsManager.inExperiment(anyString())).thenReturn(true); when(debugAdapterFactory.useNewPtvsd(anyString())).thenResolve(true); - when(debugAdapterFactory.getPtvsdPath(anyString())).thenResolve(ptvsdPath); + when(debugAdapterFactory.getPtvsdPath()).thenReturn(ptvsdPath); when(configurationService.getSettings(undefined)).thenReturn(({ pythonPath: 'python' } as any) as IPythonSettings); } @@ -104,7 +104,7 @@ suite('Extension version tests', () => { let applicationEnvironment: IApplicationEnvironment; const branchName = process.env.CI_BRANCH_NAME; - suiteSetup(async function() { + suiteSetup(async function () { // Skip the entire suite if running locally if (!branchName) { // tslint:disable-next-line: no-invalid-this @@ -117,7 +117,7 @@ suite('Extension version tests', () => { version = applicationEnvironment.packageJson.version; }); - test('If we are running a pipeline in the master branch, the extension version in `package.json` should have the "-dev" suffix', async function() { + test('If we are running a pipeline in the master branch, the extension version in `package.json` should have the "-dev" suffix', async function () { if (branchName !== 'master') { // tslint:disable-next-line: no-invalid-this return this.skip(); @@ -126,7 +126,7 @@ suite('Extension version tests', () => { return expect(version.endsWith('-dev'), 'When running a pipeline in the master branch, the extension version in package.json should have the -dev suffix').to.be.true; }); - test('If we are running a pipeline in the release branch, the extension version in `package.json` should not have the "-dev" suffix', async function() { + test('If we are running a pipeline in the release branch, the extension version in `package.json` should not have the "-dev" suffix', async function () { if (!branchName!.startsWith('release')) { // tslint:disable-next-line: no-invalid-this return this.skip(); diff --git a/src/test/mocks/vsc/extHostedTypes.ts b/src/test/mocks/vsc/extHostedTypes.ts index 8e595aea523c..c8cd3d5a6a9e 100644 --- a/src/test/mocks/vsc/extHostedTypes.ts +++ b/src/test/mocks/vsc/extHostedTypes.ts @@ -1920,6 +1920,16 @@ export namespace vscMockExtHostedTypes { } } + export class DebugAdapterServer { + readonly port: number; + readonly host?: string; + + constructor(port: number, host?: string) { + this.port = port; + this.host = host; + } + } + export enum LogLevel { Trace = 1, Debug = 2, diff --git a/tpn/distribution.toml b/tpn/distribution.toml index 4c9d743606ec..831fc198d431 100644 --- a/tpn/distribution.toml +++ b/tpn/distribution.toml @@ -1446,436 +1446,6 @@ SOFTWARE. """ -[[project]] -name = "packaging" -version = "19.2" -url = "https://github.com/pypa/packaging/tree/19.2" -purpose="PyPI" -license=""" -LICENSE -This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made -under the terms of *both* these licenses. - -LICENSE.APACHE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -LICENSE.BSD -Copyright (c) Donald Stufft and individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - -[[project]] -name = "packaging" -version = "19.2" -url = "https://github.com/pypa/packaging/tree/19.2" -purpose="PyPI" -license=""" -LICENSE -This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made -under the terms of *both* these licenses. - -LICENSE.APACHE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -LICENSE.BSD -Copyright (c) Donald Stufft and individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - [[project]] name = "parso" version = "0.5.0" @@ -2206,32 +1776,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -[[project]] -name = "six" -version = "1.12.0" -url = "https://github.com/benjaminp/six/tree/1.12.0" -purpose = "PyPI" -license = """ -Copyright (c) 2010-2018 Benjamin Peterson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -""" - [[project]] name = "sizzle" version = "(for lodash 4.17)"